【发布时间】:2012-04-10 10:52:11
【问题描述】:
我有一个列表视图,每个项目都有一个标题、一些信息和几个我用作编辑/删除按钮的 ImageView。除非用户选择该行,否则我不想显示这些“按钮”。我可以使用以下方法使“按钮”不可见:
DeleteButton.setVisibility(View.INVISIBLE);
EditButton.setVisibility(View.INVISIBLE);
在我的 BindView 中。
我可以让按钮在 onListItemClick 中可见:
ImageView DeleteButton = (ImageView) v.findViewById(R.id.button_delete);
ImageView EditButton = (ImageView) v.findViewById(R.id.button_edit);
DeleteButton.setVisibility(View.VISIBLE);
EditButton.setVisibility(View.VISIBLE);
我不能做的是在选择另一个项目或滚动离开时使“按钮”不可见。
我发现的最接近的方法是循环遍历当前视图中的列表项,并将它们全部设置为不可见,然后再使选定的项可见:
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
\\loop through all the items and set them back to invisible
for (int i=0;i<=l.getLastVisiblePosition();i++){
View vChild = l.getChildAt(i);
ImageView DeleteButton = (ImageView) vChild.findViewById(R.id.button_delete);
ImageView EditButton = (ImageView) vChild.findViewById(R.id.button_edit);
DeleteButton.setVisibility(View.INVISIBLE);
EditButton.setVisibility(View.INVISIBLE);
}
\\set the selected one visible
ImageView DeleteButton = (ImageView) v.findViewById(R.id.button_delete);
ImageView EditButton = (ImageView) v.findViewById(R.id.button_edit);
DeleteButton.setVisibility(View.VISIBLE);
EditButton.setVisibility(View.VISIBLE);
}
您可以猜到...这种方法仅在您有几件物品时才有效。
我考虑向我的列表用来跟踪按钮可见性的 SQLite 数据库添加一个字段(类似于您为复选框所做的),但这似乎很愚蠢。请告诉我还有其他方法。
【问题讨论】:
标签: android android-listview visibility android-imageview