はじめに
RecyclerViewでConcatAdapter利用におけるonBindViewHolderのpositionは何のpositionなのかわかったので自分メモです。
結論
ConcatAdapterを使うには複数のAdapterを作るが、それぞれのAdapterの表示位置を返している。
それぞれのAdapterのViewHolderごとにpositionを振っているから当たり前といえば当たり前なんだけども…
ViewModelにObjectじゃなくてpositionを送ってたら、Adapter1のposition-->1を選択してるつもりが全部のAdapterのposition-->1を選択してしまうというミスをしていたから一応メモしておこうかと…
Code
ConcatAdapter.java
RecyclerView recyclerView = view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
Adapter1 = new adapter1();
Adapter2 = new adapter2();
Adapter2 = new adapter3();
ConcatAdapter concatAdapter = new ConcatAdapter(adapter1, adapter2, adapter3);
recyclerView.setAdapter(concatAdapter);
Adapter[n].java
public class Adapter1 extends RecyclerView.Adapter<ThisDayItemRecyclerViewAdapter.ViewHolder>{
~~省略~~
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Log.i("ここ", String.valueOf(position));
~~それぞれのAdapter.javaで 0 から振られる~~
}
}
~~省略~~