2

我有一个包含汽车的 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 个图像和一些文本视图。

问题是: 当我在 viewpager 上滑动时,它不流畅 :( 记录了它,当创建下一页或上一页(取决于滑动方向)时,动画会很糟糕,滞后。解决方案是什么?(SGS4 android 4.2.2 - 项目黄油在哪里:(()

4

0 回答 0