2013-01-15 43 views
0

我正在开发一个从我的服务器来的JSON数组创建的冗长列表视图的过程。当一个项目被选中,它可能在列表中的任何地方,当我返回时,我想跳回到特定的项目。有没有办法跳转到列表视图中的特定项目

我正在考虑setSelection(position)结构,但我很好奇如何设置位置变量。它是否需要来自JSON字符串,还是它是在列表视图被填充时创建的变量。如果创建的是什么语法检索它,所以我可以将它传递给负责显示更多数据的活动,然后在列表视图重新显示时返回到原始活动。

作为附加信息,我只是添加了将其存储在我的首选项中的功能,所以它的加载速度会更快,因此它将存储在手机中。如果数据因用户交互而发生变化,我将检索新的JSON字符串,以便保持位置不重要。

我希望不需要重建我的JSON字符串来包含此变量。

感谢

+0

'position'是您传递给您的'ListView'适配器的数组中的索引。 –

+0

我的JSON字符串在这一点上没有索引变量,它只是一个数组,即项目列表。项目A,项目B,项目C,项目D,...等 –

+0

咦?数组的索引。像数组[5],其中'5'是索引。如果你传入'array',调用'setSelection(3)'将滚动到'array [3]'的列表项。这可能有助于查看您的代码。 –

回答

1

上的ListView使用setOnItemClickListener,并保存在一个局部变量的当前位置(持续存在或不坚持取决于需要),当你回来时(onResume如果它有一个活动),在ListView对象上使用此setSelection方法,在设置之前检查空值。

1

存储索引的地方,并用它来专注于选定的项目:

// focus on selected item 
View v = myListView.getChildAt(index); 
int top = (v == null) ? 0 : v.getTop(); 
myListView.setSelectionFromTop(index, top); 
相关问题