杜李的博客 IOS Coder

android开发篇:viewpager与listview的合作


viewpager和listview的合作据我观察是目前手机app比较流行的一种页面开发方式,这里简单探讨一下。

viewpager

首先准备五个page页面和一个主页面,主页面里面有个ViewPager(需要android.support.v4包)。

<android.support.v4.view.ViewPager
android:id="@+id/vp_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></android.support.v4.view.ViewPager>

然后是一个MViewPagerAdapter类,继承PagerAdapter,重载实现方法。

public class MViewPagerAdapter extends PagerAdapter{
private List<View> mListViews;
public MViewPagerAdapter(List<View> mListViews){ 
this.mListViews=mListViews;
}
@Override
public int getCount() {
return mListViews.size();
}
@Override
public void destroyItem(View v,int index,Object o){
((ViewPager) v).removeView(mListViews.get(index));
}
@Override
public Object instantiateItem(View v,int index){
((ViewPager)v).addView(mListViews.get(index),0);
return mListViews.get(index);
}
@Override
public boolean isViewFromObject(View v, Object o) {
return v==o;
}
}

最后在主函数里面进行初始化。

LayoutInflater lInflater = getLayoutInflater();
mPager=(ViewPager) findViewById(R.id.vp_main);
listViews=new ArrayList<View>();
listViews.add(lInflater.inflate(R.layout.activity_campus, null));
listViews.add(lInflater.inflate(R.layout.activity_competetion, null));
listViews.add(lInflater.inflate(R.layout.activity_disscussion, null));
listViews.add(lInflater.inflate(R.layout.activity_question, null));
mPager.setAdapter(new MViewPagerAdapter(listViews));

mPager.setCurrentItem(0);


ListView

首先准备一个list_item,是listView里满每行的样式。

然后是一个继承自BaseAdapter的Adapter类。

public class MListAdapter extends BaseAdapter{
private Activity a;
private String[][]mData;
private int layout;
public MListAdapter(Activity a,String[][]mData,int layout){
super();
this.a=a;
this.layout=layout;
this.mData=new String[mData.length][];
for(int i=0;i<mData.length;i++){
this.mData[i]=new String[mData[0].length];
for(int j=0;j<mData[0].length;j++){
this.mData[i][j]=mData[i][j];
}
}
}
......
@Override
public View getView(int position, View view, ViewGroup parent   ) {
LayoutInflater inflater = a.getLayoutInflater();
ViewGroup v=(ViewGroup) inflater.inflate(layout, null);
ImageView imageView = (ImageView) v.findViewById(R.id.im_icon);
TextView title = (TextView) v.findViewById(R.id.tx_title);
TextView content = (TextView) v.findViewById(R.id.tx_content);
imageView.setImageResource(R.drawable.ic_launcher);
title.setText(mData[position][0]);
content.setText(mData[position][1]);
return v;
}
}

这里是一个图标,一个标题,一个内容的样式。最后在主函数实现。

ViewGroup accountGroup = (ViewGroup) lInflater.inflate(R.layout.activity_account, null);
ListView listView = (ListView) accountGroup.findViewById(R.id.lv_main);
ListAdapter listAdapter = new MListAdapter(MainActivity.this, Contents.mData, R.layout.listview_item);
listView.setAdapter(listAdapter);

mPager=(ViewPager) findViewById(R.id.vp_main);
listViews=new ArrayList<View>();

listViews.add(accountGroup);

感谢

Android ViewPager多页面滑动切换以及动画效果 越冬越酷 2016-6-10


Similar Posts

Comments