繁体   English   中英

如何访问 recyclerview 中的所有 cardviews,点击特定 cardview 的项目

[英]How to access all cardviews in a recyclerview, on item click of a particular cardview

我有一个主要的回收视图,它显示我的主要卡片视图。 现在这个主要的 cardview 里面有一个子 recyclerview,它包含子 cardview。 现在,当我单击任何主卡片视图时,带有子卡片视图的子回收器视图变得可见。 如果我再次单击该主卡片视图,则子回收视图将变得不可见。

现在发生的事情是,如果我单击主车视图,那么它的子 recyclerview 将可见。 现在,如果我单击另一个主要的卡片视图,那么它的子 recyclerview 就会出现。 像这样

在此处输入图像描述

我想要的是,如果我单击另一个主卡片视图,那么,如果任何其他子视图可见,那么它应该变得不可见。 换句话说,我点击的主卡片视图的子 rewcyclerview 应该只打开。 所有其他儿童回收者视图应该是不可见的/关闭的。

现在我想要的是一种访问主要回收视图中所有主要汽车视图的方法,当我单击特定的主要卡片视图时,这样我就可以使所有这些主要卡片视图的子回收视图不可见。

希望我表达清楚了。

我只想在这样的时间打开一个子视图..

在此处输入图像描述

这是主 Recyclerview holder 适配器的 onBindViewHolder

@Override
public void onBindViewHolder(@NonNull final MainHolder holder, final int position) {

    MSeasonTanks mSeasonTanks=mSTankList.get(position);
    MoultingDataEntry moultingDataEntry=moultList.get(position);
    holder.textViewOne.setText("Tank Number : "+mSeasonTanks.getTName());

    ChildRVAdapter childRVAdapter=new ChildRVAdapter(moultingDataEntry,mSeasonTanks.getTID(),holder);

    holder.childRecyclerView.setLayoutManager(new LinearLayoutManager(context));
    holder.imageViewDirection.setImageResource(R.drawable.ic_expand);

    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(holder.childRecyclerView.getVisibility()==View.VISIBLE){
                holder.childRecyclerView.setVisibility(View.GONE);
                holder.imageViewDirection.setImageResource(R.drawable.ic_expand);
            }else{
                holder.childRecyclerView.setVisibility(View.VISIBLE);
                holder.imageViewDirection.setImageResource(R.drawable.ic_collapse);
            }
        }
    });
    holder.childRecyclerView.setAdapter(childRVAdapter);
}

所以在主要的 carview onClick 方法上访问所有主要的 cardviews,这样我就可以在打开时让他们的子 recyclerviews 不可见。

提前致谢..

我会建议的是。

-> 假设您有主要 Recyclerview 的数据,如 MainRecyclerItemData,它应该有一个 boolean 标志,isExpanded

-> isExpanded = true(内部 Recyclerview 可见)

-> isExpanded = false(隐藏内部 Recyclerview)

-> 现在,当用户单击主要回收器项目时,通过接口将单击项目的 MainRecyclerItemData 的 id 传递给您的活动,方法假设 (OuterItemClicked(String id))。

-> 现在循环 wholelist,并为 wholelist make isExpanded = false 除了具有 clcked id 的项目(因为它使它为真)。

-> 现在调用 adapter.notifydatasetchanged()

 //In onBindViewHolder() you should have code to handle isExpanded flag, 
if(isExpanded){
// Show inner recyclerview
}else{
// Hide inner recyclerview
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM