如何保持ListView的位置

mic*_*ael 10 android

可能重复:
返回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)


Cas*_*eyB 1

@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)