2010-05-11 55 views
1

我有一个ListView显示有关对象的信息。当我点击一个ListView Item时,我打开一个Activity让我操纵适配器中保存的对象的参数。这些参数被更新并远程存储。如何识别ListViewItem更新单个行

当我返回到ListView(通过后退按钮)时,我想通过从远程服务器请求参数值来更新我最初点击的ListView项目。

我目前正在通过清理并重建它来更新整个ListView。

如何引用ListView项目,以便我只能更新该项目的数据?

感谢, 杰森

回答

1

只需设置数据适配器和呼叫notifyDatasetChanged。 Android只绘制可见的行,所以非常高效。

+0

我需要在设置数据之前访问ListView项目中的视图。获取数据是一个耗时的过程,我想用一个不确定的进度条替换ListView项中的图标。 我可以更新整个ListView,并在视觉上确定。新数据刚刚出现。但是,没有向用户指示哪个ListView项目正在更新。 同样,这是返回到活动。我可以通过使用onClick事件处理程序在ListView活动中直观地指示使用进度条。 – tunneling 2010-05-11 03:18:56

+0

我想这实际上取决于你如何创建你的ListAdapter。使用ArrayAdapter,你可以使用getItem(index) – synic 2010-05-11 03:35:18

+0

看到我的答案,对不起,如果我不清楚我的问题。如果我可以用我自己的线程......当我离开并返回活动时,如何将正确的值保存在变量“位置”中?我希望能够使用静态字段,但当我返回到活动时它会被设置为零。 – tunneling 2010-05-11 03:52:42

1

了解视图的位置,就可以完成。

View singleItemView = myListView.getChildAt(position); 
ImageView icn = (ImageView) singleItemView.findViewById(R.id.icn_icon); 
ProgressBar prg = (ProgressBar) singleItemView.findViewById(R.id.prg_icon); 
icn.setVisibility(View.GONE); 
prg.setVisibility(View.VISIBLE); 

(EDIT) 这并不工作,因为该视图的“位置”可能在从另一活动返回改变。在onResume()触发后,调用getView(),并且可见ListView Items的位置从0开始编号。因此,ListView项(id和position)根据可见性重新编号。结果,我最终访问了错误的对象。