在工具栏中的任何事件上显示/隐藏RecyclerView中的视图

时间:2019-05-08 07:44:34

标签: android android-recyclerview android-switch

我在工具栏中有一个Switch按钮,在TextViews中有两个RecyclerView

我想基于TextViews的状态来管理RecyclerViewSwitch之一的可见性。

我已将OnCheckedChangeListener添加到Switch,并在此处将布尔值FLAG设置为TRUE的{​​{1}}。在FALSE的{​​{1}}方法中读取此FLAG值,并且我基于onBindViewHolder(-,-)将“视图可见性”设置为Adapter

在MainActivity中:

VISIBLE/GONE

在适配器中

FLAG

Switch switchView; private boolean switchFlag; public boolean isSwitchFlag() { return switchFlag; } public void setSwitchFlag(boolean switchFlag) { this.switchFlag = switchFlag; } protected void onCreate(Bundle savedInstanceState) { ... switchView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { setSwitchFlag(isChecked); adapter.notifyDataSetChanged(); //recyclerView.refreshDrawableState() } }); ... } 中的任何事件下,我如何设法在public void onBindViewHolder(ViewHolder viewHolder, Cursor cursor) { if (((MainActivity) mContext).isSwitchFlag()) { viewHolder.textView.setVisibility(View.VISIBLE); ... } 中显示/隐藏视图?

1 个答案:

答案 0 :(得分:1)

您最好有一个模型,其中包含一个文本字段和一个用于处理可见性的文件,然后将此模型的列表传递给recyclerView适配器。见下文:

class ListItem {
   private String text;
   private boolean isVisible;
   //...put getter and seeter methods
}

OnCheckChangeListener中,您可以更改项目的可见性:

switchView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        for (ListItem item: mItems) {
            item.setVisiblity(isChecked);
        }
        adapter.notifyDataSetChanged();
    }
});

最后,在onBindViewHolder部分中,您可以处理项目的可见性。

public void onBindViewHolder(ViewHolder viewHolder, int position) {

    viewHolder.textView.setVisibility(mItems.get(position).isVisible() ? View.VISIBLE : View.GONE);
    viewHolder.textView.setText(mItems.get(position).getText());
    ...
}