调用notifyDatasetchanged时,带有ListView的Android ViewPager无法记住最后一个位置

时间:2015-12-29 04:40:23

标签: android android-listview android-viewpager

我是中国人,我的英语很差。当ViewPager使用ListView ListView中添加了ViewPager并且PagerAdapter模式为POSITION_NONE时,我遇到了问题,我保存了充气ListView 1}}在PagerAdapter中使用List,但奇怪的现象是当我调用pagerAdapter.notifyDataSetChanged时ListView滚动到第一个位置。这是代码:

private class MyAdapter2 extends PagerAdapter {


    @Override
    public int getCount() {
        return 4;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(listviews[position], 0);

        return listviews[position];
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用此逻辑...在调用dataSetChanged之前,在argv[2]变量中存储此listview状态,并在dataSetChanged时间之后从您在parcelable变量中记录的值恢复listview 喜欢这个..

Parcelable

我从here

找到了另一种方法
   Parcelable scrollPos=listview.onSaveInstanceState();
   // call your pagerAdapter.notifyDataSetChanged 

    if(scrollPos != null)
    {
        listview.onRestoreInstanceState(scrollPos);    
    }