私はループのために、このソリューションの非常に誇りに思ってないんだけど、これは短いリストのための代替です:
あなたがビューとアダプタから、リスナーからviewHolderをクリックしたビューを取得することができます
Use this method
/**
* Returns the adapter position of the Child associated with this ChildViewHolder
*
* @return The adapter position of the Child if it still exists in the adapter.
* RecyclerView.NO_POSITION if item has been removed from the adapter,
* RecyclerView.Adapter.notifyDataSetChanged() has been called after the last
* layout pass or the ViewHolder has already been recycled.
*/
@UiThread
public int getChildAdapterPosition() {
int flatPosition = getAdapterPosition();
if (mExpandableAdapter == null || flatPosition == RecyclerView.NO_POSITION) {
return RecyclerView.NO_POSITION;
}
return mExpandableAdapter.getChildPosition(flatPosition);
}
Also see
:ビューホルダーからの位置は、最終的にはこれらのメソッドを使用します
リスナーを簡単に定義する方法here。
ItemClickSupport.addTo(mRecyclerView).setOnItemClickListener(new ItemClickSupport.OnItemClickListener() {
@Override
public void onItemClicked(RecyclerView recyclerView, int position, View v) {
// do it
}
});
使用this viewHolder取得する:view typeknow whenにクリックされたビューは、親またはあなたが得る "リスナーをクリックして" を使用して子
//Returns the view type of the item at position for the purposes of view recycling.
@Override
public int getItemViewType(int position) {
if (items.get(position) instanceof User) {
return USER;
} else if (items.get(position) instanceof String) {
return IMAGE;
}
return -1;
}
でチェック
をビュー、およびビューホルダーとアダプターの位置を表示することができます。非常に長いリストでない場合は、最初の位置からクリックした位置まで反復することができます(parent?count = 0:count ++)。countはループの後の子の位置です。コードをチェックすると、同じことをする場所が見つけられます。 – albodelu