有关ViewPager使用及解决ViewPager的item需要展示多个控件
来源:互联网 发布:股市数据下载 编辑:程序博客网 时间:2024/06/06 10:02
参考: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; } }
阅读全文
0 0
- 有关ViewPager使用及解决ViewPager的item需要展示多个控件
- Multiple-View ViewPager-如何实现Viewpager控件的一个页面展示多个page以及回弹效果
- 有关ViewPager的使用及解决Android下ViewPager和PagerAdapter中调用notifyDataSetChanged失效的问题
- 有关ViewPager的使用及解决Android下ViewPager和PagerAdapter中调用notifyDataSetChanged失效的问题
- 有关ViewPager使用及解决ViewPager和PagerAdapter中调用notifyDataSetChanged失效问题
- ViewPager实现一个页面多个Item的显示
- 一个页面上显示ViewPager的多个item问题
- viewpager一屏展示多个视图
- ViewPager实现一页显示多个item
- ViewPager每页包含多个item
- Viewpager一页显示多个item
- ViewPager一页显示多个item
- 20ViewPager demo1,2:接收ViewPager展示View的使用
- Android ViewPager控件的使用
- 安卓中ViewPager控件的使用
- ViewPager使用及如何导源码,解决参数的困扰
- 使用Viewpager时对Item中的控件进行显示隐藏的操作的问题
- Android ViewPager控件的使用(基于ViewPager的横向相册)
- ZCMU—1374
- 高级加密标准AES的工作模式(ECB、CBC、CFB、OFB)
- jquery 判断获取单选值为空
- JVM-栈帧
- 比较好的Android开发帖子
- 有关ViewPager使用及解决ViewPager的item需要展示多个控件
- C#获取鼠标位置,模拟鼠标,模拟键盘(多方转载)
- memcached--统计命令
- scp命令
- K-means 算法
- 剑指offer--之字符串中先出现两次的字符
- 我是怎么绕过微信小程序审核机制的
- 【C/C++】文件流操作
- ps -ef 命令详解