- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 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/
我正在尝试将对象 MyItem 的 ArrayList 从一个 Activity 传递到另一个 Activity 。据我了解,我需要在 MyItem 类中实现 Parcable。所以这就是我到目前为止
我正在使用 SimpleCursorAdapter 和 ListView 来显示加载器加载的一些数据。在 cursor 中,我有一个 int 从 0 到 3 的项目。 我希望此 int 等于 0-1
我正在开发一个菜单项,其代码在下面提供。我试图在单击时更改菜单项的样式。我已经应用了一个函数 clickHandler 来在选定和未选定状态之间切换。根据 menuItem 的状态,我想更改其样式。在
我有一个包含 ImgaeView 的 ListItem。我想在单击其图像或图标时删除 ListItem。这是我的 ListItemActivity。我将如何调用适配器的 remove 方法来删除
我的 ListItem 中有 3 个 RadioButtons 以及一些使用 CursorAdapter 的文本。当我单击 ListItem 中的任何 RadioButton 时,我需要获取 View
我是编码世界的新手。学习react和json。我正在研究三个链接在一起的不同面板。我想在第三个面板上显示 list 答案。 第一个面板: 显示:所有esn("4667","4668") onclick
我正在使用 Material UI 库,无法弄清楚是否有办法在一个列表项上发生 2 个不同的点击事件。 这基本上就是我所拥有的: insideAvatarFunction
在 ListView 中,如何随时将对象附加到已存在的 ListItem? (我知道我可以使用 AddItem 将对象附加到 ListItem,但是我需要在创建 ListItem 之后附加对象)。 最
我有一个网站,http://www.veluwenkamp.nl在底部的主页上,您可以找到 4 个列表项(图片)它们不能很好地对齐,它必须在一条水平线上。 我什么都试过了,还是不行。你们能给我一些建议
我正在尝试使用 Android Studio 中的“工具”命名空间功能。我正在尝试填充 ListView带有虚拟列表项,用于设计目的。链接here说 tools:listitem="@android:
我遇到了一个问题。我想学习一些关于 Firebase 等的知识。今天我制作了 RecyclerView,它应该显示我的 Firebase 数据库的项目。但是如果我运行它,我会得到这个错误: E/And
我有一个 ListView。我知道如何突出显示或更改 ListView 中所选项目的背景。但是我想像这样缩放所选项目: (选中的项目比这张图片中的其他列表项大一点) 有人可以帮我做吗? 最佳答案 我找
我的页面上有几个未排序的列表。两个列表都使用 list-style: disc inside;。每个列表的列表项中都有一对 div。问题是列表项的内容占用多行,并且圆盘垂直显示在多行列表项的底部。 这
是否可以在不更新版本的情况下使用 Sharepoint Client ObjectModel 更新 Created/Modified 字段? var file = _ClientContext.Web
我正在使用React Native构建应用程序,并使用Jest和Enzyme进行单元测试。如何测试的renderItem()函数? 它从React-Native-Elements库返回一个。 让我给您
我在asp.net中使用下拉列表,它有代表下拉列表项目的ListItem集合,每个ListItem只有两个字段来保存数据,Value和Text字段,但这些还不够我想保存更多数据对于每个项目。让我们在附
我已经根据 AJAX 结果创建了列表。基本上动态地将项目添加到列表中。但是在第二次ajax调用时,列表项追加到以前的项目中。我想重新加载新列表。它应该包含第二次 ajax 调用的结果。 我想单独删除所
当列表元素 (ListItem) 的权限已更改时,我需要触发一个事件(或启动一个工作流)。 “ItemUpdating”/“ItemUpdated”不会触发(我想是因为 ListItem 本身没有更新
我正在尝试查找如何在我的 ListView 中删除我的 ListItems 的组件。实际上有一个适用于 iOS 的模块 react-native-swipeout 您可以在其中刷出元素。我需要相同的
我正在使用React Native和react-native-elements在侧边菜单中呈现选项列表,但是当我运行该项目时,ListItem中的onPress Prop code> 未能发挥应有的作
我是一名优秀的程序员,十分优秀!