2014-01-17 42 views
1

我得到了一个ListView,一个适配器,当然还有一个Activity来管理它。有没有办法从ListView的位置得到一个完整的视图?

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

例如:

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"); 

} 
+0

看到getFirstVisubleItem,它是第一个子视图 – pskink

+0

你可以得到所有可见的看法的,但列表视图中重新使用这个意见,并改变它们这会让你陷入麻烦。就像在你将要滚动的时候一样,变化将会消失或者其他项目会被改变 –

+0

你尝试过使用adapter.getView(int position,View convertView,ViewGroup parent)。但是你应该在数据对象更改后立即进行更改在视图中使变化成为永久性的。 – dora

回答

3

这里试试这个:setAdapter到ListView第一,比yourListView.getItemAtPosition(index);
yourAdapter.getView(int position, View convertView, ViewGroup parent)

1

您可以使用此

adapter.getView(index, null, null); 

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

+0

格雷格,说我有一个列表视图,单元格,并在单元格中有很多按钮。使用“onClick”,我得到例行clickedFun(View v)。该视图是**只有按钮**。然后我需要获得“整个”细胞。 (实际上使用getTag,得到“持有者”)。这样我就可以改变单元格中的东西。还有什么可以做的!?谢谢你在这里的伟大提示顺便说一句! – Fattie

相关问题