在dialogFragment中我有viewPager有两个页面。每个页面都包含自定义适配器。一个带有微调器列表的适配器,另一个带有EditTexts列表的适配器。 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;
}
}
但它的效果会变慢!当前适配器(我的意思是在当前页面)每隔几毫秒创建视图!看看这个:
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,当我使用不同页面的适配器时它就可以工作了!
请帮我理解出了什么问题......(
答案 0 :(得分:2)
问题已在评论中得到解决。 OP的解决方案显然是要删除复杂的碎片及其适配器。但是,我在使用ViewPager的选项卡布局中也有复杂的片段,以下解决方案修复了慢速分页问题:
viewPager.setOffscreenPageLimit(2);
2
将与内存中的当前页面保持两页。这对我来说已经足够了,因为我有三个标签。但要注意在内存中保留太多页面。请参阅documentation。