ViewPager + ListView动画滞后

时间:2013-06-19 09:38:05

标签: android android-viewpager fragment lag

我有一辆装有汽车的CarsFragment。一页是一个交易(法拉利,梅赛德斯),每页都有一个实际交易模型列表。

主要观点:

public class CarsFragment extends Fragment  {

    @Override
    public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.cars_fragment, container, false);

        pager = (ViewPager) view.findViewById(R.id.carsPager);
        adapter = new CarsPagerAdapter(getChildFragmentManager());
        pager.setAdapter(adapter);

        return view;
    }
}

适配器:

public class CarsPagerAdapter extends FragmentStatePagerAdapter {

    private final FragmentManager fm;
    private String[] cars = new String[]{"Ferrari","Mercedes"};

    public MatchesPageAdapter(final FragmentManager fm) {
        super(fm);
        this.fm = fm;
    }

    @Override
    public int getCount() {
        return cars.length;
    }

    @Override
    public Fragment getItem(final int position) {
        return FragmentModelList.newInstance(cars[position]);
    }

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

}

列表:

public class FragmentModelList extends Fragment {

    public static FragmentModelList newInstance(String trade) {
        FragmentModelList fragmentModelList = new FragmentModelList();
        Bundle args = new Bundle();
        args.putString("trade", trade);
        fragmentModelList.setArguments(args);
        return fragmentModelList;
    }

    @Override
    public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_matches_list_view, container, false);
        list = (ListView) view.findViewById(R.id.modelList);
        return view;
    }

    @Override
    public void onActivityCreated(final Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        modelListAdapter = new ModelListAdapter(getActivity());
        list.setAdapter(modelListAdapter);
        loadModels();
    }

    private void loadModels() {
        new AsyncTask<Void, Void, Boolean>() {

            @Override
            protected Boolean doInBackground(final Void... params) {
                try {
                    List<Model> result = Downloader.getModelsByName(getArguments().getString("trade"));
                    modelListAdapter.setData(result);
                    return true;
                } catch (Exception ex) {
                    return false;
                }
            }

            @Override
            protected void onPostExecute(final Boolean success) {
                if (!success) {
                    // Show error
                } else {
                    // Update list
                    modelListAdapter.notifyDataSetChanged();                                
                }               
            }
        }.execute();
    }

}

和modelListAdapter设置行,其中一行包含2个图像和一些textview。

问题: 当我在viewpager上滑动它是不平滑的:(一个loged它,当创建下一页或上一页(取决于滑动方向)动画将是坏的,是滞后的。 解决办法是什么? (SGS4 android 4.2.2 - 项目黄油在哪里:(()

0 个答案:

没有答案