![](/img/trans.png)
[英]How can I make click event on CardView Item from RecyclerView
[英]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.