[Java] 多条目 →→→→→进入此内容的聊天室

来自 , 2020-05-05, 写在 Java, 查看 104 次.
URL http://www.code666.cn/view/95151403
  1. package com.example.day10_listview;
  2.  
  3. import java.util.List;
  4.  
  5. import com.example.day10_listview.bean.Info;
  6. import com.lidroid.xutils.BitmapUtils;
  7.  
  8. import android.content.Context;
  9. import android.text.TextUtils;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.BaseAdapter;
  13. import android.widget.ImageView;
  14. import android.widget.TextView;
  15.  
  16. public class MyBaseAdapter extends BaseAdapter {
  17.  
  18.         private Context context;
  19.         private List<Info> list;
  20.  
  21.         public MyBaseAdapter(List<Info> list, Context context) {
  22.                 this.list = list;
  23.                 this.context = context;
  24.  
  25.         }
  26.  
  27.         @Override
  28.         public int getCount() {
  29.                 return list.size();
  30.         }
  31.  
  32.         @Override
  33.         public Object getItem(int position) {
  34.                 return null;
  35.         }
  36.  
  37.         @Override
  38.         public long getItemId(int position) {
  39.                 return 0;
  40.         }
  41.  
  42.         @Override
  43.         public View getView(int position, View convertView, ViewGroup parent) {
  44.                 // 得到判断好的视图类型
  45.                 int type = getItemViewType(position);
  46.                 ViewHolder3 holder3 = null;
  47.                 ViewHolder2 holder2 = null;
  48.                 ViewHolder1 holder1 = null;
  49.                 if (convertView == null) {
  50.                         // 通过视图类型填充不同的布局
  51.                         switch (type) {
  52.                         case 0:
  53.                                 convertView = View.inflate(context, R.layout.item2, null);
  54.  
  55.                                 holder2 = new ViewHolder2();
  56.  
  57.                                 holder2.imageView = (ImageView) convertView
  58.                                                 .findViewById(R.id.item2_imageView);
  59.  
  60.                                 convertView.setTag(holder2);
  61.  
  62.                                 break;
  63.                         case 1:
  64.                                 convertView = View.inflate(context, R.layout.item1, null);
  65.                                 holder1 = new ViewHolder1();
  66.  
  67.                                 holder1.textView = (TextView) convertView
  68.                                                 .findViewById(R.id.item1_textView);
  69.                                 convertView.setTag(holder1);
  70.                                 break;
  71.                         case 2:
  72.                                 convertView = View.inflate(context, R.layout.item3, null);
  73.  
  74.                                 holder3 = new ViewHolder3();
  75.  
  76.                                 holder3.textView = (TextView) convertView
  77.                                                 .findViewById(R.id.item3_textView);
  78.                                 holder3.imageView = (ImageView) convertView
  79.                                                 .findViewById(R.id.item3_imageView);
  80.  
  81.                                 convertView.setTag(holder3);
  82.  
  83.                                 break;
  84.  
  85.                         }
  86.  
  87.                 } else {
  88.  
  89.                         switch (type) {
  90.                         case 0:
  91.                                 holder2 = (ViewHolder2) convertView.getTag();
  92.                                 break;
  93.                         case 1:
  94.                                 holder1 = (ViewHolder1) convertView.getTag();
  95.  
  96.                                 break;
  97.                         case 2:
  98.                                 holder3 = (ViewHolder3) convertView.getTag();
  99.  
  100.                                 break;
  101.  
  102.                         }
  103.  
  104.                 }
  105. ///////////////////以上是listView优化,以下是赋值/////////////////////////////////////////
  106.                
  107.                  
  108.                 BitmapUtils bitmapUtils=new BitmapUtils(context);
  109.                
  110.                 Info info = list.get(position);
  111.                
  112.                 switch (type) {
  113.                 case 0:
  114.                 bitmapUtils.display(holder2.imageView, info.firstImg);
  115.                         break;
  116.                 case 1:
  117.                         holder1.textView.setText(info.title);
  118.                         break;
  119.                 case 2:
  120.                         holder3.textView.setText(info.title);
  121.                         bitmapUtils.display(holder3.imageView, info.firstImg);
  122.                         break;
  123.  
  124.                
  125.                 }
  126.                
  127.                
  128.                 return convertView;
  129.         }
  130.  
  131.         @Override
  132.         // 条目视图的类型
  133.         public int getItemViewType(int position) {
  134.  
  135.                 Info info = list.get(position);
  136.                 String firstImg = info.firstImg;
  137.                 String title = info.title;
  138.                 // 有图片的地址,但是没有文字
  139.                 if (!TextUtils.isEmpty(firstImg) && TextUtils.isEmpty(title)) {
  140.  
  141.                         return 0;
  142.                 } else if (TextUtils.isEmpty(firstImg) && !TextUtils.isEmpty(title)) {
  143.                         // 没有图片的地址,但是有文字
  144.                         return 1;
  145.                 } else if (!TextUtils.isEmpty(firstImg) && !TextUtils.isEmpty(title)) {
  146.  
  147.                         // 有图片的地址,也有文字
  148.                         return 2;
  149.                 }
  150.                 return 1;
  151.         }
  152.  
  153.         @Override
  154.         // 条目类型总数
  155.         public int getViewTypeCount() {
  156.  
  157.                 return 3;
  158.         }
  159.  
  160.         class ViewHolder3 {
  161.                 TextView textView;
  162.                 ImageView imageView;
  163.         }
  164.  
  165.         class ViewHolder1 {
  166.                 TextView textView;
  167.  
  168.         }
  169.  
  170.         class ViewHolder2 {
  171.                 ImageView imageView;
  172.  
  173.         }
  174.  
  175. }
  176.  

回复 "多条目"

这儿你可以回复上面这条便签

captcha