望ましい結果RecyclerViewは:onClickのカスタム行
スクロール位置を維持し、カスタム列の特定のビューに正しい位置を与えるの特定のビューの間違った位置を与えます。
私はRecandlerViewを使用して、リストの先頭とリストの最後にオンデマンドデータを追加しようとしています。
スクロールボトムによるデータの取得は完全に機能しています。
しかし、次のようにトップ問題を持つスクロール:アダプタのonBindViewHolderに
- 設定をクリックリスナーを。
- RecyclerviewのOnItemTouchListenerでクリックリスナーを設定します。ここで
はケースです:
私は、リストをスクロールアップして、それは15件のデータをロードし、リストの一番上に追加します。 私たちの意図はスクロール位置を維持することです。
adapter.notifyItemRangeInserted(0, stringArrayListTemp.size());
を通じて達成しかし、私はビューのOnClickListenerが誤った位置を与え、その後、スクロールせずに任意の項目をクリックしていながら問題ができ 。 あなたは、アダプタのメソッドチェックすることができます。
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
String item = moviesList.get(position);
holder.title.setText(item);
holder.title.setTag(position);
holder.title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("onClick", "stringArrayList position: " + moviesList.get(position) + " - view position: " + moviesList.get((int) view.getTag()));
}
});
}
をしかしRecyclerviewのaddOnItemTouchListenerで同時にstringArrayList.get(position)
で正しい位置を与えるが、のgetTagを使用して、間違った位置を与えます。
mRecyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Log.e("onItemClick", "stringArrayList position: "+stringArrayList.get(position)+ " - view position: "+stringArrayList.get((int)view.getTag()));
}
}));
リストの先頭に次のようにデータを追加しようとすると、正確な問題が発生します。
// retain scroll position and gives wrong position onClick
adapter.notifyItemRangeInserted(0, stringArrayListTemp.size());
// does not retain scroll position, scroll to top & gives right position onClick
//adapter.notifyDataSetChanged();
recyclerview位置を維持する方法その
のようないくつかのことを試してみてください。問題が発生した部分だけを投稿してください。 –