我在Google Play商店等垂直回收视图中创建了水平回收视图。能够正确渲染项目,但是当我在水平回收视图中添加onclicklistener时,我只获得水平项目位置,如何获得veritcal recyclerview项目位置以完全从模型类中获取被点击的项目。?
答案 0 :(得分:1)
假设您有一个List<Vertical>
用于外部recyclerView ,而一个垂直列表字段为List<Horizontal>
用于内部水平回收视图垂直对象应该像这个..
public class Vertical {
//int vertical_Postion;
List<Horizontal> horizontalList;
}
在recyclerAdapter Vertical(onBindViewHolder())中将位置传递给构造函数,就像这样..
int vertical_position = position; // position you get in the onBindViewHolder
RecylerAdapterHorizontal horizontal = new RecyclerAdapterHorizontal(context,horizontalList,vertical_postion);
rv_horizontal.setAdapter(horizontal);
现在您可以将reycler适配器中的垂直位置记录为水平..对于一个水平列表,它将是常量
修改
HorizontalAdapter(Context context,List<Horizontal> horizontal, int mVertPos)
{
this.mVertPos = mVertPos;
.......
}
@Override
public void onBindViewHolder(ItemViewHolder holder, int position)
{
holder.yourView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("horizontal pos= " +position);
Log.e("vert pos= " +mVertPos);
}
});
}