Show/Hide 在 RecyclerView 中查看工具栏中的任何事件
Show/Hide views in RecyclerView on any event in Toolbar
我在工具栏中有一个 Switch
按钮,在 RecyclerView
中有两个 TextViews
。
我想根据 Switch
的状态管理 RecyclerView
中 TextViews
之一的可见性。
我已将 OnCheckedChangeListener
添加到 Switch
并在此处将布尔值 FLAG
设置为 FALSE
的 TRUE
。此 FLAG
值在 Adapter
的 onBindViewHolder(-,-)
方法中读取,我根据 FLAG
.
将视图可见性设置为 VISIBLE/GONE
在 MainActivity 中:
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);
...
}
如何在 Toolbar
的任何事件中设法 show/hide 在 RecyclerView
中观看?
您最好有一个模型,其中包含一个文本字段和一个用于处理可见性的字段,然后将此模型的列表传递给 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());
...
}
我在工具栏中有一个 Switch
按钮,在 RecyclerView
中有两个 TextViews
。
我想根据 Switch
的状态管理 RecyclerView
中 TextViews
之一的可见性。
我已将 OnCheckedChangeListener
添加到 Switch
并在此处将布尔值 FLAG
设置为 FALSE
的 TRUE
。此 FLAG
值在 Adapter
的 onBindViewHolder(-,-)
方法中读取,我根据 FLAG
.
VISIBLE/GONE
在 MainActivity 中:
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);
...
}
如何在 Toolbar
的任何事件中设法 show/hide 在 RecyclerView
中观看?
您最好有一个模型,其中包含一个文本字段和一个用于处理可见性的字段,然后将此模型的列表传递给 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());
...
}