我想为listview中的每个项目创建一个片段,因为我想将一些逻辑分开.我正在为每个项目使用视图持有者.如果视图不存在,我创建一个新片段并将其添加到容器中.
holder.mMyFragment = new MyFragment(mActivity,this); mActivity.getSupportFragmentManager().beginTransaction().add(R.id.my_container,holder.mMyFragment).commit();
同样对于每个项目,我调用holder.mMyFragment.setUi(dataSource,position)来根据数据源和位置设置片段的UI.
我遇到的问题是我在片段类的onCreateView方法中初始化片段的UI元素,但是当我将片段添加到项目时它不会被调用.所以后来当我调用setUi()使用片段中的一些UI元素时,它会抱怨NullPointerException.有人有建议吗?谢谢!
解决方法
I want to have a fragment for each item in a listview,because I want to separate some logic out.
您不能将片段用作列表项视图,因为API不允许您 – 视图和片段甚至不相关,因此您无法像这样使用它.制作自定义视图并使用适配器getViewTypeCount和getView来使用不同的列表项行为.
片段由Activity的FragmentManager或其他Fragments子FragmentManager管理;列表项视图由ListView&管理. ListAdapter.您可以在片段中使用ListView,但不能反过来使用.