所以我目前有ListView
有很多列表项。例如,每个列表项在其中都有两个视图View1
和View2
,并且具有长按监听器。默认情况下,View2
将被隐藏,直到在列表项上检测到长按。问题是,我希望只有一个列表项同时显示View1
和View2
。列表项的其余部分应仅显示View1
。我该如何实现呢?
我正在考虑跟踪应该在适配器的ListFragment
和getView
方法中显示两个视图的ListItem的id,我会检查我正在加载的项目应该显示View2
。这是一个很好的方法吗?此外,一旦检测到长按,我是否应该抓住所有可见的单元并更新每个View2
的可见性?
有更好的解决方案吗?
答案 0 :(得分:0)
我想到了两种可能性:
1)在你的班级中有一个变量'currentItem'。在longClick上,您刷新listview(例如,在适配器上使用notifyDataSetChanged()),强制它重绘当前屏幕上的项目,并隐藏所有项目,除了'currentItem'
2)在你的班级中有一个变量'lastSelectedItem'。在longClick上你做这样的事情(在伪代码中)
currentSelection = // ... item returned from onLongClick
item(lastSelectedItem).hideView();
item(currentSelection).showView();
lastSelectedItem = currentSelection;