您的位置:首页 > 其它

Viewpager嵌套GridView的实现

2014-09-04 14:44 253 查看
最近再做一个相关的项目,网上查了一些关于viewpager嵌套GridView的demo,效果都不是很理想。参考了一些例子感谢广大乐于分享的coder,在此班门弄斧不足之处见谅!

废话到此,上代码:

1.Viewpager Adaper适配器:

public class MyViewPagerAdapter extends PagerAdapter {

private List<GridView> listGV;

private String TAG = "MyViewPagerAdapter";

public MyViewPagerAdapter(Runnable runnable,

List<GridView> array) {

this.listGV = array;

Log.d(TAG, String.valueOf(listGV.size()));

}

@Override

public int getCount() {

Log.d(TAG, String.valueOf(listGV.size()));

return listGV.size();

}

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

public Object instantiateItem(View arg0, int arg1) {

try {

((ViewPager) arg0).addView(listGV.get(arg1));

} catch (Exception e) {

e.printStackTrace();

}

return listGV.get(arg1);

}

@Override

public void destroyItem(View arg0, int arg1, Object arg2) {

try {

((ViewPager) arg0).removeView((View) arg2);

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

2. GridView Adapter适配器:

/**

* 用于GridView装载数据的适配器

*

* @author fengyook

*

*/

public class ReAdapter extends BaseAdapter implements ImageAsyncTaskInterface {

ImageView img = null;

TextView name = null;

ImageView vip = null;

String tag, page, vid, imgUrl, vname, videoUrl, isVip, totalNum, text;

private int width, height;

private Context context;// 上下文

private static final String TAG = "ReAdapter";

ArrayList<ReBean> mLists = new ArrayList<ReBean>();

int PAGE_SIZE = 4;

private HashMap<Integer, View> currViews = null;

AlertDialog mDialog;

public ReAdapter(Context context, ArrayList<ReBean> reList, int page,

int width, int height, String text) {

this.context = context;

currViews = new HashMap<Integer, View>();

this.mLists = reList;

this.width = width;

this.height = height;

this.text =text;

Log.d(TAG, "text =" + text);

mLists = new ArrayList<ReBean>();

int i = page * PAGE_SIZE;

int end = i + PAGE_SIZE;

while ((i < reList.size()) && (i < end)) {

mLists.add(reList.get(i));

i++;


}

}

public int getCount() {

// TODO Auto-generated method stub

Log.d(TAG, "reList2 = " + mLists.size());

return mLists.size();

}

public Object getItem(int position) {

// TODO Auto-generated method stub

return mLists.get(position);

}

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

public View getView(int position, View convertView, ViewGroup parent) {

if (!currViews.containsKey(position) || currViews.get(position) == null) {

convertView = LayoutInflater.from(context).inflate(

R.layout.video_item, null);

img = (ImageView) convertView.findViewById(R.id.video_img);

name = (TextView) convertView.findViewById(R.id.video_name);

vip = (ImageView) convertView.findViewById(R.id.is_vip);

vip.setVisibility(View.GONE);

final ReBean re = mLists.get(position);

// 显示VIP标签

isVip = re.getIsVip();

if (isVip.equals("1")) {

vip.setVisibility(View.VISIBLE);

}

name.setBackgroundColor(Color.argb(20, 0, 20, 0));

AsyncTaskPool.getSingleInstance().execute(this, img, context,

re.getVideoImg());

name.setText(re.getName());

Log.d(TAG, "name = " + re.getName());

convertView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

isVip = re.getIsVip();

Log.d(TAG, "isVip = " + re.getIsVip());

if (isVip.equals("1")) {

Log.d(TAG, "弹出对话框!!");

// customDialog(null);

// 预留计费接口

} else {

Intent intent = new Intent(context,

WebViewActivity.class);

vid = re.getVid();

imgUrl = re.getVideoImg();

videoUrl = re.getVideoUrl();

intent.putExtra("videoUrl", videoUrl);

intent.putExtra("width", width);

intent.putExtra("height", height);

intent.putExtra("vid", vid);

context.startActivity(intent);

}

}

});

currViews.put(position, convertView);

}

return currViews.get(position);

}

//下载图片

public void updateUiImg(Bitmap result, ImageView imgView) {

// TODO Auto-generated method stub

if (result != null)

imgView.setImageBitmap(result);

}

3.请求添加数据到GridView

AsyncHttpGet httpget = new AsyncHttpGet(null, RecomEp.URL, parameters,

new RequestResultCallback() {

@Override

public void onSuccess(Object o) {

String response = o.toString();

final RecomWeb rw = new RecomWeb(response);

if (rw.isSuccess()) {

Log.d(TAG, "处理美女请求");

listGV = new ArrayList<GridView>();

runOnUiThread(new Runnable() {

@Override

public void run() {

ArrayList<ReBean> reList = new ArrayList<ReBean>();

reList = rw.getreList();

totalNum = rw.getTotalNum();

Log.d(TAG, "totalNum in 美女: " + totalNum);

for (int i = 0; i < 5; i++) {

GridView gv = new GridView(context);

gv.setAdapter(new ReAdapter(context,

reList, i, width, height, text));

Log.d(TAG, "text: " + text);

gv.setGravity(Gravity.CENTER);

gv.setClickable(true);

gv.setFocusable(true);

gv.setNumColumns(2);

listGV.add(gv);

}

bedapter = new MyViewPagerAdapter(this,

listGV);

be_pager.setAdapter(bedapter);



}

});

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: