【问题标题】:Is there a way to get a single entire View from ListView's position?有没有办法从 ListView 的位置获取一个完整的视图?
【发布时间】: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)。但是您应该在视图中更改后立即对数据对象进行更改,以使更改成为永久性的.

标签: android listview view


【解决方案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,获取“持有人”。)所以我可以说,改变单元格中的内容。还能怎么办!???顺便说一句,感谢您在这里提供的精彩提示!
    猜你喜欢
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 2013-07-09
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多