后退按钮按下时如何设置列表视图位置?

时间:2013-12-20 11:42:56

标签: android android-listview

我在列表视图项目上打开新活动点击,我按下后退按钮我想在同一位置设置列表视图。所以例如我在列表视图中单击25项,当我回来时列表视图是显示第一个元素我要在列表视图中显示25项。

6 个答案:

答案 0 :(得分:2)

使用片段包装Listview。设置setRetainInstance(true)以便在恢复实例后自动恢复所有属性。您不需要再次使用Bundles。然后保存第一个可见项目的位置和偏移量以恢复精确位置。 (如果您没有使用片段,则需要在包中存储topindex

private int top;
private int index; 

@Override onPause(){
  int index = mList.getFirstVisiblePosition();
  View v = mList.getChildAt(0);
  int top = (v == null) ? 0 : v.getTop();
  super.onPause();
}

@Override onResume(){
  super.onResume();
  mList.setSelectionFromTop(index, top);
}

看看here

答案 1 :(得分:2)

存储位置并将其设置为按下后退键

@Override

public boolean onKeyDown (int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {
    listview.setSelection(position);
    return true;
}

return super.onKeyDown(keyCode, event);
}

答案 2 :(得分:0)

你可以在某个地方存储最后点击位置,然后按下....在onresume()...这样做..

直接滚动:

getListView().setSelection(21);

顺畅滚动:

getListView().smoothScrollToPosition(21);

答案 3 :(得分:0)

当从listview遍历onPause()时,调用源活动的方法。您可以通过在结尾添加以下行来维护列表视图的状态:

index = list.getFirstVisiblePosition();

在源活动的on resume(onResume())中,最后添加以下行:

list.setSelectionFromTop(index, 0);

这应该可以解决问题。

答案 4 :(得分:0)

使用ListView.setSelection(int position)方法。它将在指定位置选择列表项,但仅在未处于触摸模式时。如果处于触摸模式,它将只滚动到指定的位置,以便位置上的项目是屏幕上的第一个。

答案 5 :(得分:0)

在onPause()方法中:

index = listView.getFirstVisiblePosition();

在onResume()方法中:

listView.setSelection(index);

除此之外,您必须确认:在setSelection(int position) listView之后调用setAdapter()方法,否则将重置listView。