前几天碰到一个问题,做到tab切换fragment,而fragment中带有listView。
看了几篇其他博主的文章,大致上说采用listfragment,单纯的fragment不能用自定义item的listview。
一开始我是相信的,采用了listfragment。但是写完了listFragment才发现这个listfragment不是继承fragment,而viewPager.setAdapter是要求Fragment类的。
viewPager.setAdapter(new FragmentStatePagerAdapter(
getSupportFragmentManager()) {
@Override
public int getCount() {
return fragments.size();
}
@Override
public Fragment getItem(int arg0) {
return fragments.get(arg0);
}
});
getItem方法中的返回类型要求Fragment,改成ListFragment也是不行了。估计要重写这个方法,感觉很麻烦,于是我又尝试前面说的单纯的fragment,居然成功了!
1.SpeakFragment。在 classListView = (ListView) v.findViewById(R.id.lv_speak);通过获得fragment的布局,在从这个布局v中获得listview。
public class SpeakFragment extends Fragment {
private ClassListAdapter adapter = null;
private List<ClassList> classList;
private ListView classListView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Classinit();
View v = inflater.inflate(R.layout.speakfragment,null);
classListView = (ListView) v.findViewById(R.id.lv_speak);
adapter = new ClassListAdapter(getActivity(), R.layout.speak_item, classList);
classListView.setAdapter(adapter);
return v;
}
public void Classinit(){
classList = new ArrayList<ClassList>();
ClassList class1 = new ClassList();
class1.setTitle("class1");
class1.setContent("classContent1");
class1.setCount("一共2个句子");
classList.add(class1);
ClassList class2 = new ClassList();
class2.setTitle("class2");
class2.setContent("classContent2");
class2.setCount("一共2个句子");
classList.add(class2);
ClassList class3 = new ClassList();
class3.setTitle("class3");
class3.setContent("classContent3");
class3.setCount("一共2个句子");
classList.add(class3);
ClassList class4 = new ClassList();
class4.setTitle("class4");
class4.setContent("classContent4");
class4.setCount("一共2个句子");
classList.add(class4);
ClassList class5 = new ClassList();
class5.setTitle("class1");
class5.setContent("classContent5");
class5.setCount("一共2个句子");
classList.add(class5);
ClassList class6 = new ClassList();
class6.setTitle("class6");
class6.setContent("classContent6");
class6.setCount("一共2个句子");
classList.add(class6);
ClassList class7 = new ClassList();
class7.setTitle("class7");
class7.setContent("classContent7");
class7.setCount("一共2个句子");
classList.add(class7);
}
}
当然我这里的adapter是重写的一个适配器,比较简单就不展示了。结果如图下