Android Listview中使用两种布局

来源:互联网 发布:淘宝网购物男装外套 编辑:程序博客网 时间:2024/05/01 07:25
package com.aobang.adapter;import java.util.List;import java.util.Map;import java.util.ArrayList;import org.json.JSONArray;import org.json.JSONObject;import com.aobang.MainActivity;import com.aobang.R;import com.aobang.tools.AsynImageLoader;import com.aobang.util.HttpUtil;import android.os.Bundle;import android.view.View.OnClickListener;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;public class MessageListViewAdapter extends BaseAdapter {// 填充数据List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();List<Map<String, Object>> listh = new ArrayList<Map<String, Object>>();// 上下文private Context context;public String cid;// 用来导入布局private LayoutInflater inflater = null;//设置布局类型数量final int VIEW_TYPE = 2;//布局类型1final int TYPE_1 = 0;//布局类型2final int TYPE_2 = 1;// 构造器public MessageListViewAdapter(List<Map<String, Object>> list,Context context) {this.list = list;this.context = context;inflater = LayoutInflater.from(context);}public MessageListViewAdapter(List<Map<String, Object>> list,List<Map<String, Object>> listh, Context context) {this.list = list;this.listh = listh;this.context = context;inflater = LayoutInflater.from(context);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size() + 1;}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0 + 1);}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}/** * 关键方法 *///设置每隔item使用的布局类型public int getItemViewType(int position) {int p = position;if (p == 0)return TYPE_1;elsereturn TYPE_2;}//返回类型总数目@Overridepublic int getViewTypeCount() {return 2;}@Overridepublic View getView(final int arg0, View arg1, ViewGroup arg2) {// TODO Auto-generated method stub//第一种布局的ViewHolderViewHolderHead holderh = null;//第二种布局的viewHolderViewHolder holder = null;//获取布局类型int type = getItemViewType(arg0);if (arg1 == null) {holderh = new ViewHolderHead();holder = new ViewHolder();inflater = LayoutInflater.from(context);//每个布局用不同方法,剩下内容就和自定义布局一样switch (type) {case TYPE_1:arg1 = inflater.inflate(R.layout.messagehead, null);holderh.head = (ImageView) arg1.findViewById(R.id.oneheadhead);holderh.name = (TextView) arg1.findViewById(R.id.oneheadname);holderh.text = (TextView) arg1.findViewById(R.id.oneheadtext);holderh.date = (TextView) arg1.findViewById(R.id.oneheaddate);holderh.good = (TextView) arg1.findViewById(R.id.oneheadgood);holderh.goodicon = (ImageView) arg1.findViewById(R.id.oneheadgoodicon);holderh.goodicon.setTag(arg0);holderh.goodicon.setOnClickListener(new OnClickListener() {private boolean isclick = true;@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (isclick) {addCount(1);isclick = false;}}});holderh.normal = (TextView) arg1.findViewById(R.id.oneheadnormal);holderh.bad = (TextView) arg1.findViewById(R.id.oneheadbad);holderh.badicon = (ImageView) arg1.findViewById(R.id.oneheadbadicon);holderh.badicon.setTag(arg0);holderh.badicon.setOnClickListener(new OnClickListener() {private boolean isclick = true;@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (isclick) {addCount(2);isclick = false;}}});holderh.pic1 = (ImageView) arg1.findViewById(R.id.oneheadpicture1);holderh.pic1.setTag(arg0);holderh.pic1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubBundle b = new Bundle();b.putString("cid", listh.get(arg0).get("id").toString());Intent intent = new Intent(context, MainActivity.class);intent.putExtra("data", b);context.startActivity(intent);}});holderh.pic2 = (ImageView) arg1.findViewById(R.id.oneheadpicture2);holderh.pic2.setTag(arg0);holderh.pic2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubBundle b = new Bundle();b.putString("cid", listh.get(arg0).get("id").toString());Intent intent = new Intent(context, MainActivity.class);intent.putExtra("data", b);context.startActivity(intent);}});holderh.pic3 = (ImageView) arg1.findViewById(R.id.oneheadpicture3);holderh.pic3.setTag(arg0);holderh.pic3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubBundle b = new Bundle();b.putString("cid", listh.get(arg0).get("id").toString());Intent intent = new Intent(context, MainActivity.class);intent.putExtra("data", b);context.startActivity(intent);}});arg1.setTag(holderh);break;case TYPE_2:arg1 = inflater.inflate(R.layout.onemessagelistview,null);holder.floor = (TextView) arg1.findViewById(R.id.messagefloor);holder.name = (TextView) arg1.findViewById(R.id.messagename);holder.text = (TextView) arg1.findViewById(R.id.messagetext);holder.date = (TextView) arg1.findViewById(R.id.messagedate);arg1.setTag(holder);break;default:break;}} else {switch (type) {case TYPE_1:holderh = (ViewHolderHead) arg1.getTag();break;case TYPE_2:holder = (ViewHolder) arg1.getTag();break;default:break;}}switch (type) {case TYPE_1://加载网络上传来的图片路径,AsynImageLoader方法自己写的AsynImageLoader loader = new AsynImageLoader();String url = listh.get(arg0).get("head").toString();Bitmap cachedImage = loader.loadDrawableFromNet(holderh.head, url);holderh.head.setImageBitmap(cachedImage);holderh.text.setText(listh.get(arg0).get("text").toString());holderh.date.setText(listh.get(arg0).get("date").toString());holderh.name.setText(listh.get(arg0).get("name").toString());holderh.good.setText(listh.get(arg0).get("good").toString());holderh.normal.setText(listh.get(arg0).get("normal").toString());holderh.bad.setText(listh.get(arg0).get("bad").toString());cid = listh.get(arg0).get("id").toString();// 展示图片加载String urls[] = getPictureDate("servlet/ShowFirstPagePicture.do?cid="+ listh.get(arg0).get("id").toString());// 判断有没有图片if (urls.length > 0) {// 有一张图片if (urls.length == 1) {if (urls[0] != null && !urls[0].equals("")) {holderh.pic1.setVisibility(View.VISIBLE);holderh.pic2.setVisibility(View.GONE);holderh.pic3.setVisibility(View.GONE);String url1 = urls[0];Bitmap cachedImage1 = loader.loadDrawableFromNet(holderh.pic1, url1);holderh.pic1.setImageBitmap(cachedImage1);}else{ holderh.pic1.setVisibility(View.GONE); holderh.pic2.setVisibility(View.GONE); holderh.pic3.setVisibility(View.GONE);}}// 有两张图片if (urls.length == 2) {if (urls[0] != null && !urls[0].equals("")) {holderh.pic1.setVisibility(View.VISIBLE);String url1 = urls[0];Bitmap cachedImage1 = loader.loadDrawableFromNet(holderh.pic1, url1);holderh.pic1.setImageBitmap(cachedImage1);}else{ holderh.pic1.setVisibility(View.GONE);}if (urls[1] != null && !urls[1].equals("")) { holderh.pic2.setVisibility(View.VISIBLE); holderh.pic3.setVisibility(View.GONE);String url2 = urls[1];Bitmap cachedImage2 = loader.loadDrawableFromNet(holderh.pic2, url2);holderh.pic2.setImageBitmap(cachedImage2);}else{ holderh.pic2.setVisibility(View.GONE); holderh.pic3.setVisibility(View.GONE);}}// 有三种图片if (urls.length == 3) {if (urls[0] != null && !urls[0].equals("")) {holderh.pic1.setVisibility(View.VISIBLE);String url1 = urls[0];Bitmap cachedImage1 = loader.loadDrawableFromNet(holderh.pic1, url1);holderh.pic1.setImageBitmap(cachedImage1);}else{ holderh.pic1.setVisibility(View.GONE);}if (urls[1] != null && !urls[1].equals("")) { holderh.pic2.setVisibility(View.VISIBLE); holderh.pic3.setVisibility(View.GONE);String url2 = urls[1];Bitmap cachedImage2 = loader.loadDrawableFromNet(holderh.pic2, url2);holderh.pic2.setImageBitmap(cachedImage2);}else{ holderh.pic2.setVisibility(View.GONE); holderh.pic3.setVisibility(View.GONE);}if (urls[2] != null && !urls[2].equals("")) {holderh.pic3.setVisibility(View.VISIBLE);String url3 = urls[2];Bitmap cachedImage3 = loader.loadDrawableFromNet(holderh.pic3, url3);holderh.pic3.setImageBitmap(cachedImage3);}else{holderh.pic3.setVisibility(View.GONE);}}} else {holderh.pic1.setVisibility(View.GONE);holderh.pic2.setVisibility(View.GONE);holderh.pic3.setVisibility(View.GONE);}break;case TYPE_2:holder.floor.setText(list.get(arg0 - 1).get("floor").toString());holder.name.setText(list.get(arg0 - 1).get("name").toString());holder.text.setText(list.get(arg0 - 1).get("text").toString());holder.date.setText(list.get(arg0 - 1).get("date").toString());break;default:break;}return arg1;}static class ViewHolder {TextView floor;TextView name;TextView text;TextView date;}static class ViewHolderHead {TextView text;TextView name;ImageView head, pic1, pic2, pic3, goodicon, badicon;TextView date;TextView good;TextView normal;TextView bad;}// 图片获取加载方法public String[] getPictureDate(String s) {String[] picurl = null;try {String url = HttpUtil.BASE_URL + s;String body = HttpUtil.queryStringForPost(url);JSONArray array = new JSONArray(body);picurl = new String[array.length()];for (int i = 0; i < array.length(); i++) {JSONObject obj = array.getJSONObject(i);picurl[i] = HttpUtil.BASE_URL + obj.getString("picurl");}} catch (Exception e) {e.getStackTrace();}return picurl;}}


                                             
0 0
原创粉丝点击