建议使用
View view = LayoutInflater.from(getContext()).inflate(R.layout.header, null); viewPager= (ViewPager) view.findViewById(R.id.viewPager);
// 为viewpager设置adapter viewPager.setAdapter(myPagerAdapter); // 将tablayout 和 viewpager绑定 tabLayout.setupWithViewPager(vp_home_); // 将viewpager 添加到 listview 的头布局 listView.addHeaderView(view);
这种 布局填充的方式添加到头布局。
下面一种方式 不知道 为什么 会报强转错误, 有大神可以帮忙看一下吗?谢谢了 。
Caused by: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to -> android.widget.AbsListView$LayoutParams
代码:
@Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // 找到布局文件中的空间 vp_home_ = $(R.id.vp_home_); tl_home = $(R.id.tl_home); ib_home_add_tab = $(R.id.ib_home_add_tab); lv_home_ = $(R.id.lv_home_); // 初始化Adapter myPagerAdapter = new MyPagerAdapter(getChildFragmentManager()); // 为viewpager设置adapter vp_home_.setAdapter(myPagerAdapter); // 将tablayout 和 viewpager绑定 tl_home.setupWithViewPager(vp_home_); // 将viewpager 添加到 listview 的头布局 lv_home_.addHeaderView(vp_home_); // 下一行报错 lv_home_.setAdapter(new MyLvAdapter());
布局::::
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v4.view.ViewPager android:id="@+id/vp_home_" android:layout_width="match_parent" android:layout_height="200dp"> </android.support.v4.view.ViewPager> </LinearLayout> <ListView android:id="@+id/lv_home_" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@null"> </ListView> </LinearLayout>