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; //布局类型1 final int TYPE_1 = 0; //布局类型2 final 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); } @Override public int getCount() { // TODO Auto-generated method stub return list.size() + 1; } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return list.get(arg0 + 1); } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } /** * 关键方法 */ //设置每隔item使用的布局类型 public int getItemViewType(int position) { int p = position; if (p == 0) return TYPE_1; else return TYPE_2; } //返回类型总数目 @Override public int getViewTypeCount() { return 2; } @Override public View getView(final int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub //第一种布局的ViewHolder ViewHolderHead holderh = null; //第二种布局的viewHolder ViewHolder 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; @Override public void onClick(View v) { // TODO Auto-generated method stub if (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; @Override public void onClick(View v) { // TODO Auto-generated method stub if (isclick) { addCount(2); isclick = false; } } }); holderh.pic1 = (ImageView) arg1 .findViewById(R.id.oneheadpicture1); holderh.pic1.setTag(arg0); holderh.pic1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Bundle 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() { @Override public void onClick(View v) { // TODO Auto-generated method stub Bundle 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() { @Override public void onClick(View v) { // TODO Auto-generated method stub Bundle 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; } }
Android Listview中使用两种布局
最新推荐文章于 2021-05-26 06:04:04 发布