0

我希望能够访问我的 ArrayAdapter 的视图:

public View getView(int position, View convertView, ViewGroup parent)

我不确定如何访问它:

View myView = myArrayAdapter.getView(myPosition, myView, ?);

我不确定如何获得 ViewGroup 父级?

4

2 回答 2

1

好吧,据我了解,您通常不应该将其Adapter用作合同实例的来源,AdapterView如下getView所示:
在参数中:inPosition,,convertViewviewParent
结果:查看女巫将显示在位置inPosition,您可以使用convertView将数据绑定到 if它不为空,返回的视图将附加到viewParent.

因此,如果您想获取适配器视图将在特定位置显示的视图,为什么不直接调用

AdapterView<?> adapterView = getAdapterView();
View myView = adapterView.getChildAt(position);

如果你想改变在特定位置显示视图的方式,你应该使用

Adapter myAdapter = getAdapter();
//change data inside adapter
myAdapter.notifyDataSetChanged();
于 2010-09-30T09:00:56.170 回答
0

更新:

尝试在数据集中的数据中添加一个字段,该字段包含返回视图时要使用的背景资源/颜色,并在 getView 中执行

holder.background = dataSet.get(position).getBackground()

如果您不知道我在说什么,请检查如何在 android 中“顺利”加载 Listview

老的:

我会说包含适配器的ListView是父 ViewGroup。

无论如何,你为什么不使用包含 ArrayAdapter 的 ListView 呢?ListView 是 Views 的容器,而不是适配器,它只保存数据集合并在 ListView 请求时按需创建和返回 Views(fe,滚动时)。即使您能够获取位置 X 的视图,我会说这不起作用,因为您作为参数传递的 convertView 不是ListView持有显示的那个。

考虑到在 ListView 中,在任何给定时刻最多有 7-8 个视图膨胀(我不知道确切的数字),而 ListView 所做的是通过调用适配器的getview来填充它们。

也就是说,要更新单行(单个视图),您需要更新适配器的数据集合。然后,推测,尝试从 ListView 中获取该视图并将其无效,但我怀疑这会起作用。

我认为这些概念是正确的,如果它们是错误的,如果有人纠正我,我将不胜感激。

为什么一次只更新一个视图?

于 2010-09-30T08:58:48.530 回答