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);    }}



原创粉丝点击