如何在返回Android中的上一个Activity时保存列表视图位置

时间:2016-01-07 05:05:00

标签: android android-layout listview android-studio scrollview

我有一个包含大量数据的ListView。但是当我转到ListView项目的下一页时单击并返回ListView。 我希望列表滚动到之前的相同位置。有人帮助实现此目的。

我试过这个code.List要滚动到同一个点,但立即到达第一个位置。

private void populateList() {
        descArray.clear();
        List<All_Post> allDesc = dbhelper.getAllDescriptions();
        for (All_Post all_Post : allDesc)
        {
            descArray.add(all_Post);
        }

        if (adapter == null)
        {
            adapter = new AllPostAdapter(this, R.layout.allpostlist, descArray);
            listView.setAdapter(adapter);
        }
        else if (adapter != null) {


            adapter.notifyDataSetChanged();
            adapter = new AllPostAdapter(this, R.layout.allpostlist, descArray);
            listView.setAdapter(adapter);
            //int firstPosition = listView.getFirstVisiblePosition();
            //listView.setSelection(firstPosition);

            int index = listView.getFirstVisiblePosition();
            View v = listView.getChildAt(0);
            int top = (v == null) ? 0 : (v.getTop() - listView.getPaddingTop());
            listView.setSelectionFromTop(index, top);
        }
    }

4 个答案:

答案 0 :(得分:2)

它是listview的默认属性。

if you move to next page on ListView Item Click and come back to ListView it will show same position

请记住一点, 你不应该在backpressed()上刷新listview,或者当你回到listview或者你正在使用的任何其他方式移回listview时 < / strong>。

答案 1 :(得分:1)

您可以在 listView OnItemClickListener中保存列表视图项的点击位置。 当你回到 listView 并使用

滚动到该位置时使用该位置
- listView.smoothScrollToPosition (position)

答案 2 :(得分:0)

您可以在saveInstanceState中跟踪位置,然后在返回相同的活动时获取相同的位置(如果您正在销毁活动)或 当您单击该项目时,您可以保存位置并使用它(如果您不喜欢该活动)。

然后,一旦你有了这个职位,你可以使用:

要直接滚动,请使用: getListView()为setSelection(位置);

要平滑滚动,请使用: 。getListView()smoothScrollToPosition(位置);

答案 3 :(得分:0)

试试这个:public int pos_clicked = -1; on list view item click : pos_clicked = listView.getFirstVisiblePostion();

回来了: if(pos_clicked != -1) listView.setSelection(pos_clicked);