Android 为什么我的ViewPager这么慢?

Android 为什么我的ViewPager这么慢?,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,在dialogFragment中,我有两个页面的viewPager。每个页面都包含一个自定义适配器。一个适配器具有微调器列表,另一个适配器具有EditText列表。ViewPager添加了适配器 public class PageFragment extends Fragment { ... @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle

在dialogFragment中,我有两个页面的viewPager。每个页面都包含一个自定义适配器。一个适配器具有微调器列表,另一个适配器具有EditText列表。ViewPager添加了适配器

public class PageFragment extends Fragment {
    ...
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.pagefragment_newprod, null);

    LinearLayout ll=(LinearLayout) view.findViewById(R.id.tvLL);
    ListView listView=new ListView(getActivity());
    ll.addView(listView);

    if (pageNumber==0){
        dropDownAdapter=new DropDownAdapter(getActivity(), fillListAdapter);
        listView.setAdapter(dropDownAdapter);
    } else if (pageNumber==1){
        boxAdapter = new BoxAdapter(getActivity(), filledFields);
        listView.setAdapter(boxAdapter);
    }
    return view;
    }
}
但是它可以减慢速度!当前适配器(我的意思是在curren页面)每毫秒创建一次视图!看看这个:

public class BoxAdapter extends BaseAdapter{
 ...
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    if (view == null) {
        view = lInflater.inflate(R.layout.addproduct_item, parent, false);
    }
    Log.d(LOG_TAG, "====As I said every milisecond...======");
    EditText editText = (EditText) view.findViewById(R.id.addProductEditText);
    editText.setText(p.value);
    return view;
    }
}   
即使当我把编辑文本集中在这个日志上时,我也会每毫秒写一次消息! 除此之外,下一页的适配器也可以工作。我在另一个适配器getView中有其他Log.d,当我使用不同页面的适配器时,它会工作


请帮助我了解问题所在……(

问题已在评论中得到解决。OP的解决方案显然是删除复杂片段及其适配器。但是,我在带有ViewPager的选项卡布局中也有复杂片段,以下解决方案修复了缓慢的分页问题:

viewPager.setOffscreenPageLimit(2);

2
将在内存中与当前页面保持两页的距离。这对我来说已经足够了,因为我有三个选项卡。不过,请注意不要在内存中保留太多的页面。请参阅。

查看。您应该在您的
ViewPager
中使用它。此外,在ViewPager中使用片段需要更长的时间来创建,需要更多的时间自定义视图(->将ViewPager的页面更改为自定义视图而不是片段)更难调试。您也可以在异步任务中填充列表(创建适配器,设置)。没有足够的代码来找出错误。很可能您有一些循环(可能不确定)这会将数据添加到列表适配器中,并导致在适配器上进行大量notifyDatasetChanged()调用。@Mathieu de Brito有没有示例如何创建这样的自定义视图而不是片段?我的适配器中有很多EditText,viewPager不喜欢它(谢谢大家)我的问题是因为片段适配器!它真的太慢了!我制作了没有片段的简单ViewPager,现在我的应用程序又快又快!