Java 如何在片段中保存复杂listview的滚动状态

Java 如何在片段中保存复杂listview的滚动状态,java,android,listview,android-fragments,android-listview,Java,Android,Listview,Android Fragments,Android Listview,我正在片段中使用文件资源管理器listview 但不知道如何保存它的滚动状态 在过去的两天里,我搜索了quora和google,但没有得到任何结果 我的项目支持Api 14+ 在我的片段浏览器中 我正在制作这样的onCreateview和onclick public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { ViewGroup root = (Vi

我正在片段中使用文件资源管理器listview

但不知道如何保存它的滚动状态

在过去的两天里,我搜索了quora和google,但没有得到任何结果

我的项目支持Api 14+

在我的片段浏览器中

我正在制作这样的onCreateview和onclick

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    ViewGroup root = (ViewGroup) inflater.inflate(R.layout.artist,container, false);

 //My coding stuff here

        lv=(ListView) root.findViewById(android.R.id.list);
        lv.setAdapter(adaptor);

        return root;
}
onclick如下所示:-

public void onActivityCreated(Bundle savedInstanceState) {
                super.onActivityCreated(savedInstanceState);
              lv=getListView();
            lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
             gtuMcaBean1= gtuMcaBean.get(position);
                                 lv.setAdapter(adaptor);
}
在我的Mainactivity中,我还有一个onbackressed,当我来到fragment view frm活动时,它会起作用

@Override
   public void onBackPressed() {
        // super.onBackPressed();
         if(pager.getCurrentItem()==0)//0 is item no for explorer view
         {
//My coding stuff here
        lv.setadaptor(adaptor);
         }
现在我想保存Listview的滚动状态,所以如果用户按下后退按钮,它应该显示上一个滚动视图,而不是从Listview开始

Thanx提前:)

参考

伊恩回答

 // save index and top position
int index = mList.getFirstVisiblePosition();
View v = mList.getChildAt(0);
int top = (v == null) ? 0 : (v.getTop() - mList.getPaddingTop());

// ...

// restore index and position
mList.setSelectionFromTop(index, top);
 // save index and top position
int index = mList.getFirstVisiblePosition();
View v = mList.getChildAt(0);
int top = (v == null) ? 0 : (v.getTop() - mList.getPaddingTop());

// ...

// restore index and position
mList.setSelectionFromTop(index, top);