可能重复:
返回ListView时保持/保存/恢复滚动位置
当我去另一个活动(通过启动另一个意图)然后回来(按后退按钮)时,如何在我的活动中保持ListView的位置?
谢谢.
Phi*_*hil 27
声明全局变量:
int index = 0;
ListView list;
Run Code Online (Sandbox Code Playgroud)
并参考你的ListViewin onCreate():
list = (ListView) findViewById(R.id.my_list);
Run Code Online (Sandbox Code Playgroud)
接下来,在最后onResume()添加这一行:
list.setSelectionFromTop(index, 0);
Run Code Online (Sandbox Code Playgroud)
最后,在最后onPause添加以下行:
index = list.getFirstVisiblePosition();
Run Code Online (Sandbox Code Playgroud)
小智 7
做简单....
@Override
protected void onPause()
{
index = listView.getFirstVisiblePosition();
// store index using shared preferences
}
Run Code Online (Sandbox Code Playgroud)
和..
@Override
public void onResume() {
super.onResume();
// get index from shared preferences
if(listView != null){
if(listView.getCount() > index)
listView.setSelectionFromTop(index, 0);
else
listView.setSelectionFromTop(0, 0);
}
Run Code Online (Sandbox Code Playgroud)
@Override
protected void onPause()
{
// Save scroll position
SharedPreferences preferences = context.getSharedPreferences("SCROLL", 0);
SharedPreferences.Editor editor = preferences.edit();
int scroll = mListView.getScrollY();
editor.put("ScrollValue", scroll);
editor.commit();
}
@Override
protected void onResume()
{
// Get the scroll position
SharedPreferences preferences = context.getSharedPreferences("SCROLL", 0);
int scroll = preferences.getInt("ScrollView", 0);
mListView.scrollTo(0, scroll);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17105 次 |
| 最近记录: |