【发布时间】:2018-09-05 12:22:16
【问题描述】:
有谁知道如何在活动中访问适配器 imageView 以隐藏视图。请举例说明。
【问题讨论】:
-
适配器到底是什么?回收站视图?
-
是的,RecyclerView
标签: android android-activity adapter
有谁知道如何在活动中访问适配器 imageView 以隐藏视图。请举例说明。
【问题讨论】:
标签: android android-activity adapter
我希望这对你有用。
通过使用SharedPreferences,我们可以轻松地从活动或片段中隐藏视图。
将标志保存在 SharedPreferences 中,即来自活动的 true。
如果您使用的是Recyclerview,那么在onBindViewHolder 方法中检查条件
if(flag==true){
holder.yourView.setVisibility(View.GONE);
}else{
holder.yourView.setVisibility(View.VISIBLE);
}
【讨论】:
转到适配器的 onBindViewHolder 并获取您的 imageview 的 id 和这样的代码 holder.mImgVw.setVisibility(View.GONE);
【讨论】:
nofityDatasetChanged)。对于双向通信,使用回调
您不应该直接与 ImageView 交互,而是可以使用notifyItemChanged() 来更新 Adapter 中的 ImageView 状态。但是,您需要通过在模型数据中添加标志或使用SparseBooleanArray 作为保存 ImageView 状态的机制来稍微修改您的适配器代码。
这里是例子:
public class Adapter ... {
private SparseBooleanArray mSelectedItems;
private List<YourModel> mItems;
public Adapter(List<YourModel> items) {
mItems = items;
mSelectedItems = new SparseBooleanArray();
}
...
public void onBindViewHolder(....) {
int itemPosition = viewHolder.getAdapterPosition();
YourModel item = items.get(itemPosition);
boolean visible = mSelectedItems.get(itemPosition);
viewHolder.imageView.setVisibility(visible? View.VISIBLE: View.GONE);
...
}
public void setItemVisibilityByPosition(int position, boolean visible) {
mSelectedItems.put(position, visible);
notifyItemChanged(position);
}
}
您可以使用以下方法更改图像可见性:
// Assume the mAdapter is your Adapter
mAdapter.setItemVisibilityByPosition(5, true);
【讨论】: