2010-05-19 79 views
1

我正在使用ListView和ArrayAdapter来存放对象。当我选择一个项目时,我正在捕获所选项目的位置和索引。如果在选择之前向下滚动,则位置和索引代表项目在列表中的位置。选择这些项目将我带到另一个活动。当我使用后退按钮返回列表时,似乎ListView为可见项目获取了一个新的位置和索引。ListView - 重新启动时的索引和位置行为()

因此,我无法弄清楚如何在ListView活动的重新启动()期间引用所选项目。我试图捕捉位置和索引,但正如我所说的,它们在返回到活动时发生变化。

我对ListView的“重绘”理解是否正确?它是否根据可见物品重新编号? - 当生命周期中getView()被调用?有没有办法强制ListView的更新,以便我捕获的索引仍然指向同一个对象?

感谢, 杰森

回答

0

如果你在你的ListView相同的元素,你将拥有相同的位置的时候,当你点击一个项目...

@Override 
    protected void onListItemClick(ListView l, View v, final int position, long id) { 
     super.onListItemClick(l, v, position, id); 
Toast.makeText(this, "This is the Item " + position + " of my listView", 
       Toast.LENGTH_LONG).show(); 
     }); 

在你同getView()函数...

public View getView(int position, View convertView, ViewGroup parent) { 
    Toast.makeText(this, "This is the Item " + position + " of my listView", 
         Toast.LENGTH_LONG).show();   
+0

当我单击项目,我去另一个活动。当我点击后退按钮时,“可见”列表将重新编号,从零开始的顶部项目。新的立场是不一样的。这看起来像是一种优化行为。当这种情况发生时,我会失去对先前选定项目的引用。 我在返回时正在更改ListView中的图像。如果我稍微向下滚动并选择,让我们说项目5.当我返回时,可见列表顶部的第5个项目中的图标会发生变化。这可能是之前的第七次。 – tunneling 2010-05-19 11:17:09

+0

当您在ListView中第一次单击该项目时,项目位置必须是从零开始的位置!发布您的实施代码 – Jorgesys 2010-05-19 15:07:27

+0

活动A是一个ListView。活动B是从活动A中选择的项目的控制器。当从活动B返回到活动A时,“旧”位置不等于所选项目的“新”位置。我注意到,项目的“新”位置是根据正在显示的顶部的位置分配的。当我有权访问它时,我会发布代码。谢谢。 – tunneling 2010-05-19 16:32:01

相关问题