我在工具栏中有一个Switch
按钮,在TextViews
中有两个RecyclerView
。
我想基于TextViews
的状态来管理RecyclerView
中Switch
之一的可见性。
我已将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);
...
}
中显示/隐藏视图?
答案 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());
...
}