参考:http://blog.csdn.net/loongggdroid/article/details/19970523
ViewPager的使用类似于ListView,需要有对应的Adapter进行数据绑定,实现图片切换仅需要继承PaperAdapter就可以了。继承后需要重写如下四个方法。
instantiateItem(ViewGroup, int)
destroyItem(ViewGroup, int, Object)
getCount()
isViewFromObject(View, Object)
类似于BaseAdapter,其中instantiateItem方法用来得到每个View,destroyItem用以控制当某个View不需要的时候的回收处理。isViewFromObject用来实现判断View和Object是否为同一个View。
第一步:首先是在布局文件里添加viewPager布局。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="11"
android:background="@color/black" >
<com.xinanseefang.ui.view.ImageViewPager
android:id="@+id/vp_photoesalbum"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
第二步:创建item布局用于填充在ViewPager里,可以自定义也可以加载写好的xml布局文件。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_log"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/noimg240x160"
android:layout_centerVertical="true" />
<ImageView
android:id="@+id/iv_360"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginBottom="@dimen/public_margin15"
android:src="@drawable/icon_360_big"
android:layout_centerInParent="true"
android:visibility="gone"/>
</RelativeLayout>
第三步:然后就是Activity了,在Activity把布局放一个集合中传给PagerAdapter。代码如下:
//********* 在这里写item布局放在集合中传给pagerAdapte **********
listViews = new ArrayList<View>();
for ( int i = 0; i < getData().getHousephoto().size(); i++) {
View view = LayoutInflater.from(getApplicationContext()).
inflate(R.layout.adapter_house_theme_photo, null);
ImageView item_iv_log = (ImageView) view.
findViewById(R.id.iv_log);
ImageView item_iv_360 = (ImageView) view.
findViewById(R.id.iv_360);
//判断图片是否是3d
if(getData().getHousephoto().get(i).getIs3d() != null && getData().getHousephoto().get(i).getIs3d().equals("Yes")){
item_iv_360.setVisibility(View.VISIBLE);
}else {
item_iv_360.setVisibility(View.GONE);
}
item_iv_log.setImageResource(R.drawable.noimg720x300);
String url = getData().getHousephoto().
get(i).getUrl();
if(!MyApplication.getShowPicture()){
Glide.with(context)
.load(url )
.priority(Priority.HIGH)
.placeholder(R.drawable.noimg720x300)
.error(R.drawable.noimg720x300)
.into(item_iv_log);
}
final int finalI = i;
item_iv_log.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, R.class);
intent.putExtra("city", mCity);
intent.putExtra("houseid", houseid);
intent.putExtra("photoid", getData().
getHousephoto().get(finalI).getPhotoid());
startActivity(intent);
}
});
listViews.add(view);
}
PhotoPagerAdapter photoPagerAdapter = new PhotoPagerAdapter(listViews);
imageViewPager.setAdapter(photoPagerAdapter);
photoPagerAdapter.notifyDataSetChanged();
第四步:是有关ViewPager的适配器的重写。代码如下:
package net.loonggg.viewpager;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class ViewPagerAdapter extends PagerAdapter {
private List<View> list;
public ViewPagerAdapter(List<View> list) {
this.list = list;
}
@Override
public int getCount() {
if (list != null && list.size() > 0) {
return list.size();
} else {
return 0;
}
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(list.get(position));
return list.get(position);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}