setOnClickListner()无法使用嵌套的recyclerView android
我创建一个包含垂直方向项目的列表。setOnClickListner()无法使用嵌套的recyclerView android,android,android-gradle-plugin,Android,Android Gradle Plugin,我创建一个包含垂直方向项目的列表。 我在父RecyclerView的单个节点中添加了另一个RecyclerView,以显示每个单元格中的项目网格。 我在单元格中为网格项添加了一个单击侦听器,如下所示:mrvhomemosic.setOnClickListener(this)内部视图支架,但它不会被点击触发。 如果有人有同样的问题,请帮助我。或者任何使用嵌套回收视图的人 下面给出了我的Holder类和onBindView() class HomeViewHolder extends Recycle
我在父RecyclerView的单个节点中添加了另一个RecyclerView,以显示每个单元格中的项目网格。
我在单元格中为网格项添加了一个单击侦听器,如下所示:
mrvhomemosic.setOnClickListener(this)代码>内部视图支架,但它不会被点击触发。
如果有人有同样的问题,请帮助我。或者任何使用嵌套回收视图的人
下面给出了我的Holder类和onBindView()
class HomeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
RecyclerView mRvHomeMosaic;
public HomeViewHolder(View itemView) {
super(itemView);
this.mRvHomeMosaic = (RecyclerView) itemView.findViewById(R.id.rv_home_mosaic_image);
mRvHomeMosaic.setEnabled(true);
mRvHomeMosaic.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (clickListener != null) {
clickListener.itemClickListner(view, getPosition());
}
}
}
@Override
public void onBindViewHolder(final HomeViewHolder holder, int position) {
if (mDataList.get(position).getmMosaicModelList() != null &&
mDataList.get(position).getmMosaicModelList().size() > 0) {
holder.mRvHomeMosaic.setEnabled(true);
HomeSubAdapter adapter = new HomeSubAdapter(mContext, mDataList.get(position).
getmMosaicModelList());
holder.mRvHomeMosaic.setAdapter(adapter);
StaggeredGridLayoutManager mLayoutManager = new StaggeredGridLayoutManager(3,
StaggeredGridLayoutManager.VERTICAL);
holder.mRvHomeMosaic.setLayoutManager(mLayoutManager);
} else {
holder.mRvHomeMosaic.setEnabled(true);
List<MosaicTileModel> modelList = new ArrayList<>();
MosaicTileAdapter adapter = new MosaicTileAdapter(mContext, modelList);
holder.mRvHomeMosaic.setAdapter(adapter);
StaggeredGridLayoutManager mLayoutManager = new StaggeredGridLayoutManager(3,
StaggeredGridLayoutManager.VERTICAL);
holder.mRvHomeMosaic.setLayoutManager(mLayoutManager);
}
}`
类HomeViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
RecyclerView mRvHomeMosaic;
公共HomeViewHolder(查看项目视图){
超级(项目视图);
this.mRvHomeMosaic=(RecyclerView)itemView.findViewById(R.id.rv\u home\u mosaic\u image);
mRvHomeMosaic.setEnabled(真);
mRvHomeMosaic.setOnClickListener(this);
}
@凌驾
公共void onClick(视图){
如果(clickListener!=null){
clickListener.itemClickListner(视图,getPosition());
}
}
}
@凌驾
公共无效onBindViewHolder(最终HomeViewHolder,int位置){
if(mDataList.get(position).getmMosaicModelList()!=null&&
mDataList.get(position.getmMosaicModelList().size()>0){
holder.mRvHomeMosaic.setEnabled(真);
HomeSubAdapter adapter=新的HomeSubAdapter(mContext,mDataList.get(位置)。
getmMosaicModelList());
支架.mRvHomeMosaic.setAdapter(适配器);
StaggedGridLayoutManager mLayoutManager=新的StaggedGridLayoutManager(3,
StaggedGridLayoutManager.VERTICAL);
holder.mRvHomeMosaic.setLayoutManager(mLayoutManager);
}否则{
holder.mRvHomeMosaic.setEnabled(真);
List modelList=新的ArrayList();
MosaicTileAdapter=新的MosaicTileAdapter(mContext,modelList);
支架.mRvHomeMosaic.setAdapter(适配器);
StaggedGridLayoutManager mLayoutManager=新的StaggedGridLayoutManager(3,
StaggedGridLayoutManager.VERTICAL);
holder.mRvHomeMosaic.setLayoutManager(mLayoutManager);
}
}`
单个节点还具有一些其他项。单击listener可正确触发该项目。但对于内部Recylcerview对象,它不会被触发 只需向对象添加一个标记,并从该标记中提取click listener中的对象。尽量不要将
此
传递给mRvHomeMosaic.setOnClickListener()
,并使用新视图.setOnClickListener()
作为参数。onClickListener()可正确处理每个单元格中的其他项。唯一的问题是内部recyclerview对象(在我的例子中是mRvHomeMosaic)。我需要点击那个recyclerView(在我的例子中是mRvHomeMosaic)。我需要为此做些什么吗?只需向对象添加一个标记并从该标记中提取click listener中的对象。尽量不要将this
传递给mRvHomeMosaic.setOnClickListener()
,并使用new View.setOnClickListener()
作为参数。onClickListener()对每个单元格中的其他项正常工作。唯一的问题是内部recyclerview对象(在我的例子中是mRvHomeMosaic)。我需要点击那个recyclerView(在我的例子中是mRvHomeMosaic)。我需要为此做点什么吗?