android适配器中view复用的示例代码
来源:互联网 发布:医疗网络营销策划 编辑:程序博客网 时间:2024/06/06 08:33
工作中用过的,总结一下
package com.iwhere.showsports.adapter;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Color;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.text.TextUtils;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.RelativeLayout;import com.iwhere.libumengshare.AuthroizeToolV2;import com.iwhere.nettool.BaseCallBack;import com.iwhere.nettool.JsonTools;import com.iwhere.showsports.R;import com.iwhere.showsports.activity.PlayerZhiBoActivity;import com.iwhere.showsports.bean.ZhiboMovie;import com.iwhere.showsports.utils.Constants;import com.iwhere.showsports.utils.Utils;import com.letv.controller.PlayProxy;import com.letv.universal.iplay.EventPlayProxy;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.assist.FailReason;import com.nostra13.universalimageloader.core.assist.ImageSize;import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;import org.json.JSONArray;import org.json.JSONObject;import org.xutils.common.util.LogUtil;import java.lang.ref.WeakReference;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedList;import java.util.Map;public class HomeZhiboImgPagerAdapter extends PagerAdapter { private Activity mContext; LinkedList<RelativeLayout> mPaperViews = new LinkedList<RelativeLayout>(); private Map<Integer, RelativeLayout> mImgsListViews = new HashMap<Integer, RelativeLayout>(); private ArrayList<ZhiboMovie> mLocalPhotoList = new ArrayList<ZhiboMovie>(); final int width; final int height; public HomeZhiboImgPagerAdapter( Activity mContext ) { super(); this.mContext = mContext; this.mLocalPhotoList = new ArrayList<ZhiboMovie>();//width = (int) mContext.getResources().getDimension(R.dimen.w610dp)/ 2;//height = (int) mContext.getResources().getDimension(R.dimen.w457dp)/ 2; width = 305; height = 253; } @Override public int getCount() {// int size = mLocalPhotoList == null || mLocalPhotoList.size() == 0 ? 1 : mLocalPhotoList.size(); int size = mLocalPhotoList == null ? 0 : mLocalPhotoList.size(); return size; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void destroyItem(ViewGroup container, int position, Object object) { RelativeLayout view = (RelativeLayout) mImgsListViews.get(position); view.setBackgroundColor(Color.TRANSPARENT); if (view != null) { container.removeView(view); mImgsListViews.remove(position); } mPaperViews.push((RelativeLayout) view); } /** * 载入图片进去,用当前的position 除以 图片数组长度取余数是关键 */ @Override public Object instantiateItem(View container, final int position) { RelativeLayout rlImagePaper = null; if (!mPaperViews.isEmpty()) { rlImagePaper = mPaperViews.poll(); } if (rlImagePaper == null || rlImagePaper.getParent() != null) { rlImagePaper = new RelativeLayout(mContext); rlImagePaper.setLayoutParams(new LayoutParams(width, height)); LogUtil.e("新生成的" + rlImagePaper + "列表大小=" + mPaperViews.size()); } RelativeLayout iv = initPaperMingXingImgView(position, rlImagePaper); mImgsListViews.put(position, iv); ((ViewPager) container).addView(iv, 0); return iv; } private RelativeLayout initPaperMingXingImgView(final int position, final RelativeLayout iv) { final String imageurl = mLocalPhotoList.get(position).getActivityPicUrlFormat(); ImageLoader.getInstance().loadImage(imageurl, new ImageSize(width, height), new ImageLoadingListener() { @Override public void onLoadingComplete(String arg0, View arg1, Bitmap bitmap) { iv.setBackground(new BitmapDrawable(bitmap)); } @Override public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { iv.setBackgroundResource(R.mipmap.ic_log); } @Override public void onLoadingCancelled(String s, View view) { } @Override public void onLoadingStarted(String s, View view) { } }); iv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String roomid = mLocalPhotoList.get(position).getRoomId(); String activityId = mLocalPhotoList.get(position).getActivityId(); toLookZhiBo(mLocalPhotoList.get(position).getPlayURL(),roomid,activityId); } }); return iv; } public void getLiveList(){ Map<String, String> map = new HashMap<String, String>(); AuthroizeToolV2.getInstance().sendByGet(Constants.GET_ZHIBO_LIST,map,new BaseCallBack<String>(){ @Override public void onSuccess(String result) { super.onSuccess(result); LogUtil.e("getLiveList==>"+result); JSONObject jobj = JsonTools.getJSONObject(result); String status = JsonTools.getString(jobj, "server_status"); if ("200".equals(status)) { JSONObject data = JsonTools.getJSONObject(jobj,"data"); JSONArray lives = JsonTools.getJSONArray(data, "lives"); ArrayList<ZhiboMovie> zhiboMovies = ZhiboMovie.fomatFromJson(lives); mLocalPhotoList.clear(); if(zhiboMovies != null){ mLocalPhotoList.addAll(zhiboMovies); } notifyDataSetChanged(); } else { String server_error = JsonTools.getString(jobj, "server_error"); if (TextUtils.isEmpty(server_error)) { Utils.showToast(mContext,server_error); } } } @Override public void onError(Throwable ex, boolean isOnCallback) { super.onError(ex, isOnCallback); } }); } // ///////////////////////////////////////////////////////////////////// private void toLookZhiBo(final String zhibourl,final String roomid,final String activityId){ if(TextUtils.isEmpty(zhibourl)){ Utils.showToast(mContext,"直播路径不能为空!"); return; } LogUtil.e("将要直播的地址是===>"+zhibourl); LogUtil.e("将要直播的roomid是===>"+roomid); Intent toZhiBo = new Intent(mContext, PlayerZhiBoActivity.class); //乐视手机云直播 Bundle mBundle = new Bundle(); mBundle.putInt(PlayProxy.PLAY_MODE, EventPlayProxy.PLAYER_LIVE); mBundle.putString("path", zhibourl); mBundle.putString("roomid", roomid); mBundle.putString("activityId", activityId); toZhiBo.putExtra(PlayerZhiBoActivity.DATA, mBundle); mContext.startActivity(toZhiBo); }}
阅读全文
0 0
- android适配器中view复用的示例代码
- 火星人代码示例:系统设置(asp.net MVC3中View的复用示例)
- 适配器模式代码示例
- c++适配器代码示例
- Android中Fragmeng的示例代码
- Android中常用的适配器
- Android中适配器的使用
- android中适配器的分析
- Android中常用的适配器
- android 一个公共的适配器,简化适配器代码
- 代码实现Android中View的渐隐渐现效果
- android在代码中修改view的布局
- Android中通过代码加载自定义的view
- Android 如何解决代码中view的setId红线问题
- android代码中获取view的宽高方式
- android在代码中设置View的属性
- Android 自定义View 代码复用
- Android中悬浮窗口的实现原理和示例代码
- Oracle MyBatis批量插入
- 产品经理到底是要做全职保姆式_还是要做合作伙伴式?
- Android Kotlin的使用和第一个项目HelloKotlin
- Scala_(5)_隐式转换|并发编程
- String、StringBuffer、StringBuilder的区别与效率比较
- android适配器中view复用的示例代码
- Bower+grunt-wiredep自动注入包到html
- Android 调百度地图搜索API时 出现的打包后手机端无法正常获取地址信息原因
- 2017年7个主要的金融行业数据趋势
- angular js 过滤器的使用及思路总结
- 工具类——自定义Collections集合方法
- 开发环境搭建--Ubunut下JDK安装
- S5PV210 系列(裸机八)之 时钟系统
- viewport详解