0
私は以下の構造を持つ私の活動のフラグメントを持ってスクロールしません。私はこの方法でセットアップ私のフラグメントをもリサイクルビューは流暢に
public class InfinityFragmentRecyclerAdapter extends RecyclerView.Adapter implements HasDatabase
{
protected JsonDatabase jsonDatabase = new JsonDatabase();
protected Context mContext;
protected int arrangeMode;
public InfinityFragmentRecyclerAdapter(Context context, int viewMode)
{
mContext = context;
arrangeMode = viewMode;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
{
View view;
if (arrangeMode == SupportsGridAndListArrangement.GRID_VIEW)
{
view = LayoutInflater.from(viewGroup.getContext()).inflate
(R.layout.grid_advertisement_layout, null);
}
else
{
view = LayoutInflater.from(viewGroup.getContext()).inflate
(R.layout.list_advertisement_layout, null);
}
return new ItemHolder(view, mContext, arrangeMode);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i)
{
AdItemPassiveDataSet adItemPassiveDataSet = (AdItemPassiveDataSet) jsonDatabase.getDataSetAt(i);
Picasso.with(mContext).load(adItemPassiveDataSet.getItemThumbnailAddress()).into
(((ItemHolder) viewHolder).imageView);
((ItemHolder) viewHolder).adID = adItemPassiveDataSet.getItemID();
((ItemHolder) viewHolder).userID = adItemPassiveDataSet.getUserID();
((ItemHolder) viewHolder).userRole = adItemPassiveDataSet.getUserRole();
((ItemHolder) viewHolder).price.setText(adItemPassiveDataSet.getItemPrice(), false);
((ItemHolder) viewHolder).title.setText(adItemPassiveDataSet.getItemTitle(), false);
((ItemHolder) viewHolder).state.setText(adItemPassiveDataSet.getItemState(), false);
((ItemHolder) viewHolder).date.setText(adItemPassiveDataSet.getItemTime(), false);
if (arrangeMode == SupportsGridAndListArrangement.LIST_VIEW)
{
((ItemHolder) viewHolder).description.setText(adItemPassiveDataSet.getItemDescription());
StaggeredGridLayoutManager.LayoutParams layoutParams =
new StaggeredGridLayoutManager.LayoutParams
(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setFullSpan(true);
viewHolder.itemView.setLayoutParams(layoutParams);
}
}
@Override
public int getItemCount()
{
if (jsonDatabase != null)
{
return jsonDatabase.getCount();
}
else
{
return 0;
}
}
@Override
public JsonDatabase getDatabase()
{
return jsonDatabase;
}
public void append(Object newJsonDatabase)
{
int currentCount = 0;
if (jsonDatabase != null)
{
currentCount = jsonDatabase.getCount();
}
int newCount = ((JsonDatabase) newJsonDatabase).getCount();
jsonDatabase.appendAtEnd((JsonDatabase) newJsonDatabase);
for (int i = currentCount; i < (currentCount + newCount); i++)
{
notifyItemInserted(i);
}
}
}
:それは以下のコードとアダプタを持っている
recyclerView = (RecyclerView) findViewById(R.id.cafeRecyclerView);
recyclerViewAdapter = new InfinityFragmentRecyclerAdapter(this, SupportsGridAndListArrangement.GRID_VIEW);
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
recyclerView.setAdapter(recyclerViewAdapter);
と私は、サーバーから新しいデータを受け取るたびに、私はCardView
にRecyclerViewに追加しますこのようにして:
recyclerViewAdapter.append(newJsonDatabase);
すべてが問題ありません!私はデータをダウンロードしてリサイクラービューに追加することができますが、問題はリサイクラービューが滑らかにスクロールしないことです。リサイクラビューの私のカードビューの上または下がリサイクラビューの一番上に達すると、何とかスティックされていくつかのピクセルがジャンプします!私は本当に混乱しています。任意のアイデアをしてください?どんな助けもありがとう。
ようにする必要があり、正しく理解している場合は、私達にあなたのインターフェース用のコードを表示する必要が
)の代わりにnotifyItemInsertedのnotifyItemRangeInserted()を(使用しよう:「実装HasDatabase " – Simon