1

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

现在发生的事情是,如果我单击主视图,那么它的子回收视图将可见。现在,如果我单击另一个主卡视图,则会出现其子回收器视图。像这样

在此处输入图像描述

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

现在我想要的是一种访问主recyclerview中所有主要carviews的方法,当我单击一个特定的主cardview时,我可以使所有这些主cardviews的子recyclerview不可见。

希望我说清楚了。

我只想像这样一次打开一个子视图..

在此处输入图像描述

这是主 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 在打开时不可见。

提前致谢..

4

1 回答 1

1

我会建议的是。

-> 假设你有主 Recyclerview 的数据,比如 MainRecyclerItemData,它应该有一个布尔标志,isExpanded

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

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

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

-> 现在循环整个列表,并且对于整个列表,除了具有 clcked id 的项目之外,使 isExpanded = false (因为它使其为真)。

-> 现在调用 adapter.notifydatasetchanged()

 //In onBindViewHolder() you should have code to handle isExpanded flag, 
if(isExpanded){
// Show inner recyclerview
}else{
// Hide inner recyclerview
}
于 2020-04-14T15:19:51.590 回答