视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
android界面左右滑动
2025-09-29 00:14:41 责编:小OO
文档
文件名:page.xml

详细出处参考:http://www.jb51.net/article/36268.htm

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="fill_parent"

android:layout_height="fill_parent" >

        android:id="@+id/listview"

        android:layout_width="match_parent"

android:layout_height="wrap_content" />

文件名:listviewitem.xml

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

android:orientation="vertical" >

        android:id="@+id/textView"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="hello"

        android:textColor="#00ff00"

/>

        android:id="@+id/imageView"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_margin="5dp"

/>

以上的第二个布局文件 只提供给simpleAdapter 

package com.example.learnpager2;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.os.Parcelable;

import android.support.v4.view.PagerAdapter;

import android.support.v4.view.ViewPager;

import android.support.v4.view.ViewPager.OnPageChangeListener;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.ViewGroup;

import android.view.ViewParent;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.ListView;

import android.widget.RelativeLayout;

import android.widget.SimpleAdapter;

public class PagerActivity extends Activity {

    ViewPager viewPager;

ArrayList pagesArrayList;// 添加listview 然后传给MyPagerAdapter 充当媒介

    String[] strs;

    String[] strs2;

    ListView listView;

    Button button1;

    Button button2;

    Button button3;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_pager);

        iniParams();

        iniViews();

    }

    private void iniParams(){

pagesArrayList=new ArrayList();

        strs=new String[]{"a

        strs2=new String[]{"1

    }

    private void iniViews(){

        viewPager=(ViewPager)findViewById(R.id.viewPager);

        //第一个页面的viewpager第1个page里的listview

        LayoutInflater layoutInflater=getLayoutInflater();

        listView=(ListView)

                (layoutInflater.inflate(R.layout.page,null).findViewById(R.id.listview));

ArrayAdapter arrrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,strs);

        listView.setAdapter(arrrayAdapter);

        pagesArrayList.add(listView);

        //第个页面的viewpager第2个page里的listview

        listView=(ListView)

                (layoutInflater.inflate(R.layout.page,null).findViewById(R.id.listview));

ArrayAdapter arrrayAdapter2=new ArrayAdapter(this,android.R.layout.simple_list_item_1,strs2);

        listView.setAdapter(arrrayAdapter2);

        pagesArrayList.add(listView);

        //第三个面的viewpager第3个page里的listview

        SimpleAdapter simpleAdapter3=new SimpleAdapter(this,getDatasForListView(),

                R.layout.listviewitem,new String[]{"title

        listView=(ListView)

                (layoutInflater.inflate(R.layout.page, null).findViewById(R.id.listview));

        listView.setAdapter(simpleAdapter3);

        pagesArrayList.add(listView);

        viewPager.setAdapter(new MyPagerAdapter(pagesArrayList));

        viewPager.setOnPageChangeListener(new MyOnPageChangeListener());

        viewPager.setCurrentItem(0); 

        button1=(Button)findViewById(R.id.button1);

        button2=(Button)findViewById(R.id.button2);

        button3=(Button)findViewById(R.id.button3);

    }

public List> getDatasForListView(){

        Log.e("3", "");

List> listMaps=new ArrayList>();

        String[] strings=new String[]{"图片1

        int[] images=new int[]{R.drawable.p1,R.drawable.p1,R.drawable.p1};

for(int i=0;i            listMaps.add(ListViewItemFactory.generate(new Object[]{strings[i],images[0]}));

        }

        return listMaps;

    }

    static class ListViewItemFactory{

static Map generate(Object[] obj){

Map map=new HashMap();

            map.put("title", obj[0]);

            map.put("image",obj[1]);

            return map;

        }

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.pager, menu);

        return true;

    }

    public class MyPagerAdapter extends PagerAdapter {

public List mListViews;

public MyPagerAdapter(List mListViews) {

            this.mListViews = mListViews;

        }

        @Override

        public void destroyItem(View arg0, int arg1, Object arg2) {

            Log.d("destroyItem", ""+arg0+" "+arg1);

            ((ViewPager) arg0).removeView(mListViews.get(arg1));

        } 

        @Override

        public int getCount() {

            return mListViews.size();

        }

        @Override

        public Object instantiateItem(View arg0, int arg1) {

            Log.d("instantiateItem", ""+arg0+" "+arg1);

            try { 

                if(mListViews.get(arg1).getParent()==null)

                    ((ViewPager) arg0).addView(mListViews.get(arg1), 0);  

                else{

                    //  很难理解新添加进来的view会自动绑定一个父类,由于一个儿子view不能与两个父类相关,所以得解绑

                    //不这样做否则会产生 viewpager java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

// 还有一种方法是viewPager.setOffscreenPageLimit(3); 这种方法不用判断parent 是不是已经存在,但多余的listview不能被destroy

                    ((ViewGroup)mListViews.get(arg1).getParent()).removeView(mListViews.get(arg1));

                    ((ViewPager) arg0).addView(mListViews.get(arg1), 0); 

                }

            } catch (Exception e) {  

                // TODO Auto-generated catch block  

                Log.d("parent=", ""+mListViews.get(arg1).getParent()); 

                e.printStackTrace();  

            }  

            return mListViews.get(arg1);

        }

        @Override

        public boolean isViewFromObject(View arg0, Object arg1) {

            return arg0 == (arg1);

        }

        @Override

        public void restoreState(Parcelable arg0, ClassLoader arg1) {

        }

        @Override

        public Parcelable saveState() {

            return null;

        }

        @Override

        public void startUpdate(View arg0) {

        }

    }

    class MyOnPageChangeListener implements OnPageChangeListener{

        @Override

        public   void onPageScrollStateChanged (int state){

            // TODO Auto-generated method stub

        }

        @Override

        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            // TODO Auto-generated method stub

        }

        Color preColor;

        @Override

        public void onPageSelected(int position) {

            // TODO Auto-generated method stub

            Log.d("page",  "pos="+position);

            switch(position)

            {

            case 0: //button1.setBackgroundColor(0x00FF00);break;

            case 1:// button1.setBackgroundColor(0xFF0000);break;

            case 2:

            }

        }

    }

}下载本文

显示全文
专题