//现在有一个需求,需要在一个ViewPager的几个页面用listview显示,而且listview的item种类>=2,其中还有viewpager那么盖怎么实现呢,废话不多说,先把ViewPager架子搭起来
效果
MainActivity.java
- public class MainActivity extends Activity {
-
- private ViewPager viewpager;
- private List<View> list = new ArrayList<View>();
- private MyPageAdapter adapter;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- viewpager = (ViewPager)findViewById(R.id.viewpager);
-
- initData();
- adapter = new MyPageAdapter();
- viewpager.setAdapter(adapter);
- }
-
- private void initData() {
- list.add(new View1(this).listview);
- list.add(new View1(this).listview);
- list.add(new View1(this).listview);
- }
-
- class MyPageAdapter extends PagerAdapter{
-
- @Override
- public int getCount() {
- return list.size();
- }
-
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
- return arg0==arg1;
- }
-
- @Override
- public Object instantiateItem(ViewGroup container, int position) {
- ((ViewGroup)container).addView((View)list.get(position));
- return list.get(position);
-
- }
-
- @Override
- public void destroyItem(ViewGroup container, int position, Object object) {
- container.removeView(list.get(position));
- }
-
- }
-
- }
activity_main.xml
- <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/viewpager"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context="com.zyh.listview_viewpager.MainActivity" >
-
- </android.support.v4.view.ViewPager>
现在ViewPager有了,再看一下要添加的listview
- public class View1 {
- public static final int VIEWTYPE_VIEWPAGER = 0;
- public static final int VIEWTYPE_TEXTVIEW = 1;
- ListView listview;
- private Context mContext;
- private MyListviewAdapter adapter;
-
- public View1(Context context) {
- init(context);
- }
-
- public void init(Context context) {
- mContext = context;
- listview = new ListView(context);
- adapter = new MyListviewAdapter();
- listview.setAdapter(adapter);
- }
-
- class MyListviewAdapter extends BaseAdapter {
-
- @Override
- public int getCount() {
- return 100;
- }
-
- @Override
- public Object getItem(int position) {
- return null;
- }
-
- @Override
- public long getItemId(int position) {
- return 0;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
-
- if (position % 3 == 0) {
-
-
- if (convertView == null) {
- ChildView child = new ChildView();
- child.init(mContext);
- convertView = child.viewPager;
- }
-
- } else {
-
- if (convertView == null) {
- convertView = new TextView(mContext);
-
- }
- ((TextView)convertView).setText("测试数据:"+position);
- }
- System.out.println(convertView.toString());
- return convertView;
- }
- @Override
- public int getViewTypeCount() {
- return 2;
- }
- @Override
- public int getItemViewType(int position) {
-
- if (position % 3 == 0) {
-
-
- return VIEWTYPE_VIEWPAGER;
-
- } else {
-
- return VIEWTYPE_TEXTVIEW;
- }
- }
-
- }
- }
然后是listview中的item为 ViewPager的情况
ChildVIew.java
- public class ChildView {
-
- ViewPager viewPager;
- private List<View> list = new ArrayList<View>();
- private Context mContext;
-
-
- public void init(Context context) {
- mContext = context;
-
- for (int i = 0; i < 5; i++) {
- Button view = new Button(mContext);
- view.setText("ViewPager中的TextView:" + i);
- view.setTextSize(20);
- list.add(view);
- }
- viewPager = (ViewPager) View.inflate(mContext, R.layout.layout_viewpager, null);
-
-
-
-
-
- AbsListView.LayoutParams lp = new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, 200);
- viewPager.setLayoutParams(lp);
- viewPager.setAdapter(new MyPageAdapter());
- }
-
- class MyPageAdapter extends PagerAdapter {
-
- @Override
- public int getCount() {
- return list.size();
- }
-
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
- return arg0 == arg1;
- }
-
- @Override
- public Object instantiateItem(ViewGroup container, int position) {
- container.addView(list.get(position));
- return list.get(position);
-
- }
-
- @Override
- public void destroyItem(ViewGroup container, int position, Object object) {
- container.removeView(list.get(position));
- }
-
- }
-
- }
layout_viewpager.xml
- <?xml version="1.0" encoding="utf-8"?>
- <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="@android:color/holo_blue_bright" >
-
-
-
- </android.support.v4.view.ViewPager>