Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android从另一行访问listview行_Android_Listview - Fatal编程技术网

android从另一行访问listview行

android从另一行访问listview行,android,listview,Android,Listview,假设我有一个包含3行的listview。如果用户单击第1行中的按钮,它将展开一个菜单(显示/隐藏的只是线性布局)。如果他们单击第2行中的某个项目,我希望能够折叠第1行中的菜单。这可能吗?如果是,如何操作?您可以始终在视图上使用getContext()来获取包含活动的引用,您可以将该活动转换为列表活动(假设您正在使用该活动),并调用常用方法来获取列表适配器中该位置的数据: ((ListActivity) v.getContext()).getListAdapter().getItem(1) 然

假设我有一个包含3行的listview。如果用户单击第1行中的按钮,它将展开一个菜单(显示/隐藏的只是线性布局)。如果他们单击第2行中的某个项目,我希望能够折叠第1行中的菜单。这可能吗?如果是,如何操作?

您可以始终在
视图上使用
getContext()
来获取包含
活动的引用,您可以将该活动转换为
列表活动
(假设您正在使用该活动),并调用常用方法来获取列表适配器中该位置的数据:

((ListActivity) v.getContext()).getListAdapter().getItem(1) 
然后,您可以随意操作数据,并在ListAdapter上调用
notifyDataSetChanged()


但这可能会让你和你的用户更容易直接使用,这样你就可以用你的用户已经知道的可预测的交互来扩展列表。您可以在中的浏览器源代码中查看“历史记录”活动,以获取真实示例。如果它不能完全满足您的需要,您可以随时从Android源代码中提取
ExpandableListView
本身的代码。

保存对您以后要操作的视图的引用。可能用
final
变量包装,这样就很容易更改。

永远不要这样做。在listview中保存对视图的引用将导致出现重大问题。一旦视图离开屏幕,它们就会在内部循环使用,并且试图向它们写入内容在最好的情况下会导致崩溃。事实上,我最终实现了这一点,而且还没那么糟糕。当他们滚动时,我必须将引用设置为null,但这是有效的,因为它只会影响可见的视图。在人们处理ListView的方式中,你犯了一个常见的错误。您试图从行中控制listview,而listview不是为此而构建的。相反,您应该考虑如何将更改通知您的活动,以便它能够处理对listview.CSharperWithJava的更改,您能给出一个代码示例吗?假设您希望在单击第2行中的按钮时修改第1行中文本视图的文本。。。。你会怎么做呢?我希望它能这么简单,不幸的是,可扩展列表视图不能满足我的需要。另外,我没有使用ListActivity。相反,我有一个ListView,它位于一个布局中,然后由一个正常的活动呈现……好吧,您可能应该只使用ListActivity;它只是一个普通活动的简单包装器,可以轻松地跟踪ListView/ListAdapter。但是,如果您出于某种原因不想或不能这样做,您可以在活动中的某个位置保留对ListView/适配器的成员变量引用,也可以这样做(将ListView的ID替换为android.R.ID.ListView):
((ListActivity)v.getContext()).findViewById(android.R.ID.ListView).getAdapter().getItem(1)
等。