有关ViewPager使用及解决ViewPager的item需要展示多个控件

参考: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;  
    }  

}  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值