gpt4 book ai didi

Android - 选择 ListItem 时使 ImageView 可见

转载 作者:搜寻专家 更新时间:2023-11-01 08:10:45 24 4
gpt4 key购买 nike

我有一个 ListView ,每个项目都有一个标题、一些信息和几个我用作编辑/删除按钮的 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);

我不能做的是在选择另一个项目或滚动离开时让“按钮”不可见。

我发现最接近的是循环遍历当前 View 中的列表项并将它们全部设置为不可见,然后再使所选的一个可见:

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 数据库添加一个字段(类似于您对复选框所做的),但这看起来很愚蠢。请告诉我还有另一种方法。

最佳答案

另一种方法是在你的类中有一个 int 字段来记住当前位置:

private int current = -1;

然后在 onItemCLick() 方法中使用该字段来隐藏/显示您的 View :

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// if it is the first click ignore this part
if (current != -1) {
View last = l.getChildAt(current); // the last one clicked
last.findViewById(R.id.button1).setVisibility(View.GONE); // kill it
}
v.findViewById(R.id.button1).setVisibility(View.VISIBLE);
current = position; // remember the new clicked position
}

如果您希望在滚动列表时 View 也消失并且这些 View 不可见,那么在 bindView() 方法中添加隐藏 View 的行:

//...
ImageView DeleteButton = (ImageView) view.findViewById(R.id.button_delete); // view is the view that you get as a parameter
ImageView EditButton = (ImageView) view.findViewById(R.id.button_edit);
DeleteButton.setVisibility(View.INVISIBLE);
EditButton.setVisibility(View.INVISIBLE);

//...

当用户滚动列表时,所有 View 都将 Button 的可见性设置为 GONE 并且 onItemCLick() 逻辑将起作用仅适用于可见 View 。

关于Android - 选择 ListItem 时使 ImageView 可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com