如何在回到之前的ListView时保持ListView位置?

时间:2015-12-07 04:59:56

标签: android listview

我从Sq-lite db.填充列表视图现在我的问题是,当我点击列表视图项目进入下一页并在此之后返回列表视图时,我想要滚动列表与之前的相同点。任何想法如何做到这一点。

这是

中的list-view方法

的onCreate()

private void populateList() {
    descArray.clear();
    List<All_Post> allDesc = dbhelper.getAllDescriptions();
    for (All_Post all_Post : allDesc)
    {
        String strInspectorname = all_Post.getStringInspectorname();
        Log.e("strInspectorname "," = " + strInspectorname);
        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);
    }
} 

我尝试了这个链接Maintain/Save/Restore scroll position when returning to a ListView,listView在最后位置。

3 个答案:

答案 0 :(得分:2)

试试这个

 // Save the ListView state (= includes scroll position) as a Parceble
Parcelable state = listView.onSaveInstanceState();

// e.g. set new items
listView.setAdapter(adapter);

// Restore previous state (including selected item index and scroll position)
listView.onRestoreInstanceState(state);

答案 1 :(得分:1)

按照以下步骤

  1. 存储您在数据库/共享首选项中某处单击的第一个listview位置。
  2. 转到第二个列表视图。
  3. 当您回到第一个列表视图时,只需简单获取第一个列表视图位置的存储值。
  4. 4。  直接滚动:

    getListView().setSelection(YOUR_POSITION);
    

    平滑滚动:

    getListView().smoothScrollToPosition(YOUR_POSITION); 
    

    希望它会对你有所帮助。

答案 2 :(得分:0)

在转到下一页之前,只需根据列表视图方向调用getScrollY / getScrollX来存储列表视图的滚动位置。当您再次返回此页面时,通过调用setScrollX / setScrollY

恢复存储位置