我希望能够访问我的 ArrayAdapter 的视图:
public View getView(int position, View convertView, ViewGroup parent)
我不确定如何访问它:
View myView = myArrayAdapter.getView(myPosition, myView, ?);
我不确定如何获得 ViewGroup 父级?
我希望能够访问我的 ArrayAdapter 的视图:
public View getView(int position, View convertView, ViewGroup parent)
我不确定如何访问它:
View myView = myArrayAdapter.getView(myPosition, myView, ?);
我不确定如何获得 ViewGroup 父级?
好吧,据我了解,您通常不应该将其Adapter
用作合同实例的来源,AdapterView
如下getView
所示:
在参数中:inPosition
,,convertView
viewParent
结果:查看女巫将显示在位置inPosition
,您可以使用convertView
将数据绑定到 if它不为空,返回的视图将附加到viewParent
.
因此,如果您想获取适配器视图将在特定位置显示的视图,为什么不直接调用
AdapterView<?> adapterView = getAdapterView();
View myView = adapterView.getChildAt(position);
如果你想改变在特定位置显示视图的方式,你应该使用
Adapter myAdapter = getAdapter();
//change data inside adapter
myAdapter.notifyDataSetChanged();
更新:
尝试在数据集中的数据中添加一个字段,该字段包含返回视图时要使用的背景资源/颜色,并在 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 中获取该视图并将其无效,但我怀疑这会起作用。
我认为这些概念是正确的,如果它们是错误的,如果有人纠正我,我将不胜感激。
为什么一次只更新一个视图?