Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在viewpager适配器notifyDataSetChanged,;这台变压器坏了_Android_Android Viewpager_Android Pagetransformer - Fatal编程技术网

Android 在viewpager适配器notifyDataSetChanged,;这台变压器坏了

Android 在viewpager适配器notifyDataSetChanged,;这台变压器坏了,android,android-viewpager,android-pagetransformer,Android,Android Viewpager,Android Pagetransformer,我使用ViewPager和PageAdapter来显示我的数据,并且ViewPager有它的PageTransformer,它工作得很好,现在我需要在滑动到新项时更新数据和UI,但问题是当我滑动到新项并调用'adapter.notifyDataSetChanged(),我的数据和UI已更新,但PageTransformer不工作 这是我的密码: mAdapter = new DynamicsCardAdapter(getContext(), mList); mViewPager.setPageT

我使用
ViewPager
PageAdapter
来显示我的数据,并且ViewPager有它的
PageTransformer
,它工作得很好,现在我需要在滑动到新项时更新数据和UI,但问题是当我滑动到新项并调用'adapter.notifyDataSetChanged(),我的数据和UI已更新,但PageTransformer不工作

这是我的密码:

mAdapter = new DynamicsCardAdapter(getContext(), mList);
mViewPager.setPageTransformer(true, new ZoomOutPageTransformer2());
mViewPager.setPageMargin(-(int) (width * 0.30));
mViewPager.setAdapter(mAdapter);
适配器:

public class DynamicsCardAdapter extends PagerAdapter {

    private Context mContext;
    private List<ChildDynamicsInfo> mList;
    private int mPosition = -1;
    private int mChildCount = 0;


    public DynamicsCardAdapter(Context context, List<ChildDynamicsInfo> list) {
        mContext = context;
        mList = list;
    }

    @Override
    public int getCount() {
        return mList.size();
    }

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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup viewGroup, int position) {
        View convertView = LayoutInflater.from(mContext).inflate(R.layout.item_parent_dynamics_card, viewGroup, false);
        textName = (TextView) convertView.findViewById(R.id.student_name);
        textName.setText(mList.get(position).name);
        viewGroup.addView(convertView);
        return convertView;
    }

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

    @Override
    public void notifyDataSetChanged() {
        mChildCount = getCount();
        super.notifyDataSetChanged();
    }

    @Override
    public int getItemPosition(@NonNull Object object) {
        //return POSITION_NONE;
        if ( mChildCount > 0) {
            mChildCount --;
            return POSITION_NONE;
        }
        return super.getItemPosition(object);
    }
}
我只是想在滑动到新项目时更新我的UI,并确保我的PageTransformer工作正常,我曾经尝试过:

mViewPager.setAdapter(mAdapter);
mViewPager.setCurrentItem(position);
但是因为我在
onPageSelected()
上更新了UI,所以它会导致
堆栈溢出

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {
            mList.get(position).isRead = true;
            mAdapter.notifyDataSetChanged();
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
});
mViewPager.setAdapter(mAdapter);
mViewPager.setCurrentItem(position);