工作中用过的,总结一下
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);
}
}