有没有办法从 ListView 的位置获取一个完整的视图?

Posted

技术标签:

【中文标题】有没有办法从 ListView 的位置获取一个完整的视图?【英文标题】:Is there a way to get a single entire View from ListView's position? 【发布时间】:2014-01-17 12:18:28 【问题描述】:

我有一个 ListView、一个适配器,当然还有管理这一切的 Activity。

如何从我的 Activity 中获取某个位置的视图以更改 Activity 中的某些内容? 我知道我可以进行更改,然后执行 adapter.notifyDataSetChanged(),但我希望整个视图返回到我的 Activity

例如:

private void changeText(int index)
View view=adapter.giveMeBackMyView(index); //that's what I'm trying to find
TextView tv=(TextView) view.findViewById(R.id.listTextView);
tv.setText("changed");

 

【问题讨论】:

查看getFirstVisubleItem,它是第一个子视图 您可以获得所有可见视图,但 listview 会重复使用这些视图并更改它们,这会给您带来麻烦。就像您滚动时一样,更改将消失或其他项目将被更改 您是否尝试过使用adapter.getView(int position, View convertView, ViewGroup parent)。但是您应该在视图中更改后立即对数据对象进行更改,以使更改成为永久性的. 【参考方案1】:

在这里试试这个:首先将适配器设置为 ListView,而不是 yourListView.getItemAtPosition(index);yourAdapter.getView(int position, View convertView, ViewGroup parent)

【讨论】:

【参考方案2】:

你可以用这个

adapter.getView(index, null, null);

请注意,您正在缩短适配器/视图系统。这不是一个好主意,因为您要求的视图可能实际上并不存在于列表视图中。请记住,一个列表视图可以包含数百万个项目。这些实际上并不存在。只有几个可见的视图,android 会在你滚动时回收它们。因此,您可能需要重新考虑您是如何解决这个问题的,并牢记这一点。

【讨论】:

格雷格,说我有一个列表视图,有单元格,单元格中有很多按钮。使用“onClick”,我得到了例行的 clickedFun(View v)。该视图只是按钮。然后我需要得到“整个”单元格。 (实际上使用 getTag,获取“持有人”。)所以我可以说,改变单元格中的内容。还能怎么办!???顺便说一句,感谢您在这里提供的精彩提示!

以上是关于有没有办法从 ListView 的位置获取一个完整的视图?的主要内容,如果未能解决你的问题,请参考以下文章

从具有按钮的 ListView 获取列表项的位置

有没有办法从另一个进程中找出完整的文件路径?

有没有办法从代码中获取放置在场景编辑器中的 SKSpriteNode 的当前位置? - 精灵套件

Flutter 仿企业微信多选-listview可见item位置

如何获取listView位置值并通过intent传递给另一个类

从 ListView 获取 ListViewItem 而不是 Item