我希望能够访问我的ArrayAdapter视图:
public View getView(int position, View convertView, ViewGroup parent)
我不确定如何访问它:
View myView = myArrayAdapter.getView(myPosition, myView, ?);
我不确定如何获得ViewGroup父级?
答案 0 :(得分:1)
据我所知,您并不认为Adapter
通常会作为AdapterView
实例的来源,因此getView
合同如下:
在参数中:inPosition
,convertView
,viewParent
结果:查看女巫将显示在位置inPosition
,您可以使用convertView
绑定数据,如果它不为空,则返回的视图将附加到viewParent
。
因此,如果您想要获取特定位置的适配器视图显示的视图,为什么不调用
AdapterView<?> adapterView = getAdapterView();
View myView = adapterView.getChildAt(position);
如果您想更改在特定位置显示视图的方式,请使用
Adapter myAdapter = getAdapter();
//change data inside adapter
myAdapter.notifyDataSetChanged();
答案 1 :(得分:0)
<强>更新强>
尝试向数据集中的数据添加字段,该数据集包含返回视图时要使用的背景资源/颜色,以及在getView中
holder.background = dataSet.get(position).getBackground()
如果你不知道我正在谈论这个持有人的事情,请检查How to load the Listview "smoothly" in android
<强>旧强>
我会说包含适配器的 ListView 是父ViewGroup。
无论如何,为什么不使用包含ArrayAdapter的ListView? ListView是Views 的容器,而不是适配器,它只保存数据集合,并在ListView请求时按需创建和返回Views(f.e,滚动时)。即使您能够获取位置X的视图,我也会说这不起作用,因为您作为参数传递的convertView不是 ListView 持有的和显示。
考虑到在ListView中,在任何给定时刻最多有7-8个视图被膨胀(我不知道确切的数字),而ListView所做的是通过调用适配器的来填充它们getview
这就是说,要更新单行(单个视图),您需要更新适配器的数据集合。然后,推测,尝试从ListView获取该视图并使其无效,但我怀疑这会起作用。
我认为这些概念是正确的,如果他们错了,如果有人纠正我,我将不胜感激。
为什么一次只更新一个视图?