首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的ViewPager速度这么慢?

为什么我的ViewPager速度这么慢?
EN

Stack Overflow用户
提问于 2015-04-15 09:23:32
回答 1查看 3.7K关注 0票数 3

在dialogFragment中,我有两个页面的viewPager。每个页面都包含一个自定义适配器。一个适配器具有派生程序列表,另一个适配器具有EditTexts列表。ViewPager很好地添加了适配器。

代码语言:javascript
复制
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页面)创建每毫秒的视图!看看这个:

代码语言:javascript
复制
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;
    }
}   

即使当我把注意力集中在EditText上时,Log.d还是每毫秒写一条消息!除此之外,下一页的适配器也能工作。我在另一个适配器getView上有其他Log.d,当我使用不同页面的适配器时,它可以工作!

请帮助我了解出了什么问题.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-24 06:45:33

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

代码语言:javascript
复制
viewPager.setOffscreenPageLimit(2);

2将使内存中的当前页面保持两个页面的距离。这对我来说已经足够了,因为我有三个标签。但是,要小心将太多的页面保存在内存中。见文档

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29646402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档