你的位置:首页 > 操作系统

[操作系统]android listview多视图嵌套多视图


笔记,listview视图总结

 1 public class HomeEduMoreAdapter extends BaseAdapter { 2  3   private final String TAG = "HomeEduMoreAdapter"; 4  5   private static final int TYPE_COMMON = 0; 6   private static final int TYPE_BL = 1; 7   private static final int TYPE_NONE = 2; 8   private static final int TYPE_THREE = 3; 9   private static final int TYPE_QUESTION = 4; 10   private int TYPE_COUNT = 5; 11  12   private LayoutInflater inflater; 13   private List<HomeEdus> list; 14   private Context context; 15   private DisplayImageOptions options; 16   private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener(); 17  18   public HomeEduMoreAdapter(Context context, List<HomeEdus> objects) { 19     this.context = context; 20     // groupUserDao = new GroupUserDao(context); 21     inflater = LayoutInflater.from(context); 22     list = objects; 23     options = new DisplayImageOptions.Builder().cacheInMemory(true) 24         .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 25         .bitmapConfig(Bitmap.Config.RGB_565).cacheOnDisk(true) 26         .showImageOnLoading(R.drawable.icon_default)// 设置图片在下载期间显示的图片 27         .showImageForEmptyUri(R.drawable.icon_default)// 设置图片Uri为空或是错误的时候显示的图片 28         .showImageOnFail(R.drawable.icon_default)// 设置图片加载/解码过程中错误时候显示的图片 29         .considerExifParams(true).build(); 30   } 31  32   @Override 33   public int getCount() { 34     // TODO Auto-generated method stub 35     return list.size(); 36   } 37  38   @Override 39   public int getViewTypeCount() { 40     // TODO Auto-generated method stub 41     return TYPE_COUNT; 42   } 43  44   @Override 45   public HomeEdus getItem(int position) { 46     // TODO Auto-generated method stub 47     return list.get(position); 48   } 49  50   @Override 51   public long getItemId(int postion) { 52     // TODO Auto-generated method stub 53     return postion; 54   } 55  56   @Override 57   public int getItemViewType(int position) { 58     // TODO Auto-generated method stub 59     HomeEdus edus = getItem(position); 60      61     String type = edus.getType();// 菜单类型 62     int result = TYPE_COMMON; 63     switch (type) { 64     case "hx": 65       result = TYPE_COMMON; 66       break; 67     case "wd": 68       if (edus.getPic1() == null || edus.getPic1().equals("")) { 69         result = TYPE_QUESTION; 70       }else { 71         result = TYPE_COMMON; 72       } 73        74       break; 75     case "jt": 76       result = TYPE_COMMON; 77       break; 78     case "bl": 79       result = TYPE_BL; 80       break; 81     default: 82       String jx = edus.getType();// 精选内容类型 83       switch (jx) { 84       default: 85         Integer imgNum = Integer.parseInt(edus.getImgNum()); 86         if (imgNum != null && imgNum > 0 && imgNum < 3) { 87           result = TYPE_COMMON; 88         } else if (imgNum != null && imgNum >= 3) { 89           result = TYPE_THREE; 90         } else { 91           result = TYPE_NONE; 92         } 93  94         break; 95       } 96  97       break; 98     } 99     return result;100   }101 102   @Override103   public View getView(int position, View convertView, ViewGroup parent) {104     // TODO Auto-generated method stub105     final HomeEdus model = getItem(position);106     int type = getItemViewType(position);107     final ViewHolder holder;108 109     if (convertView == null) {110       holder = new ViewHolder();111       WindowManager manager = (WindowManager) context112           .getSystemService(Context.WINDOW_SERVICE);113       int width = manager.getDefaultDisplay().getWidth();114       int height = manager.getDefaultDisplay().getWidth() / 2;115       switch (type) {116       case TYPE_COMMON:117         convertView = inflater.inflate(R.layout.item_home_edus, null);118         holder.tv_content = (QSTextView) convertView119             .findViewById(R.id.tv_content);120         holder.tv_content.setTextColor(Color.GRAY);121         holder.tv_title = (QSTextView) convertView122             .findViewById(R.id.tv_title);123         holder.tv_name = (TextView) convertView124             .findViewById(R.id.tv_name);125         // holder.img_head = (CircleImageView) convertView126         // .findViewById(R.id.img_head);127         holder.img_content = (ImageView) convertView128             .findViewById(R.id.img_content);129         holder.tv_read = (TextView) convertView130             .findViewById(R.id.tv_read);131         holder.tv_comment = (TextView) convertView132             .findViewById(R.id.tv_comment);133         holder.tv_thumbupNum = (TextView) convertView134             .findViewById(R.id.tv_thumbupNum);135         break;136       case TYPE_QUESTION:137         convertView = inflater.inflate(R.layout.item_home_question, null);138         holder.tv_content = (QSTextView) convertView139             .findViewById(R.id.tv_content);140         holder.tv_content.setTextColor(Color.GRAY);141         holder.tv_title = (QSTextView) convertView142             .findViewById(R.id.tv_title);143         holder.tv_name = (TextView) convertView144             .findViewById(R.id.tv_name);145         holder.tv_read = (TextView) convertView146             .findViewById(R.id.tv_read);147         holder.tv_comment = (TextView) convertView148             .findViewById(R.id.tv_comment);149         holder.tv_thumbupNum = (TextView) convertView150             .findViewById(R.id.tv_thumbupNum);151         break;152       case TYPE_BL:153       case TYPE_NONE:154         convertView = inflater.inflate(R.layout.item_home_case, null);155         holder.tv_content = (QSTextView) convertView156             .findViewById(R.id.tv_content);157         holder.tv_content.setTextColor(Color.GRAY);158         holder.tv_title = (QSTextView) convertView159             .findViewById(R.id.tv_title);160         holder.tv_name = (TextView) convertView161             .findViewById(R.id.tv_name);162         holder.img_content = (ImageView) convertView163             .findViewById(R.id.img_content);164 165         LayoutParams para1 = holder.img_content.getLayoutParams();166         para1.height = height;167         para1.width = width;168         holder.img_content.setLayoutParams(para1);169 170         holder.tv_read = (TextView) convertView171             .findViewById(R.id.tv_read);172         holder.tv_comment = (TextView) convertView173             .findViewById(R.id.tv_comment);174         holder.tv_thumbupNum = (TextView) convertView175             .findViewById(R.id.tv_thumbupNum);176         break;177 178       case TYPE_THREE:179         convertView = inflater.inflate(R.layout.item_home_three, null);180         holder.tv_content = (QSTextView) convertView181             .findViewById(R.id.tv_content);182         holder.tv_content.setTextColor(Color.GRAY);183         holder.tv_title = (QSTextView) convertView184             .findViewById(R.id.tv_title);185         holder.tv_name = (TextView) convertView186             .findViewById(R.id.tv_name);187         holder.img_content1 = (ImageView) convertView188             .findViewById(R.id.img_content1);189         holder.img_content2 = (ImageView) convertView190             .findViewById(R.id.img_content2);191         holder.img_content3 = (ImageView) convertView192             .findViewById(R.id.img_content3);193         int w = width / 3;194         LayoutParams p = holder.img_content1.getLayoutParams();195         p.height = (int)(w*0.7f);196         p.width = w;197         holder.img_content1.setLayoutParams(p);198 199         p = holder.img_content2.getLayoutParams();200         p.height = (int)(w*0.7f);201         p.width = w;202         holder.img_content2.setLayoutParams(p);203 204         p = holder.img_content3.getLayoutParams();205         p.height = (int)(w*0.7f);206         p.width = w;207         holder.img_content3.setLayoutParams(p);208 209         holder.tv_read = (TextView) convertView210             .findViewById(R.id.tv_read);211         holder.tv_comment = (TextView) convertView212             .findViewById(R.id.tv_comment);213         holder.tv_thumbupNum = (TextView) convertView214             .findViewById(R.id.tv_thumbupNum);215         break;216 217       }218 219       convertView.setTag(holder);220     } else {221       holder = (ViewHolder) convertView.getTag();222     }223 224     switch (type) {225     case TYPE_COMMON:226     case TYPE_BL:227       setCommon(holder, model);228       break;229     case TYPE_QUESTION:230       setQuestion(holder,model);231       break;232     case TYPE_NONE:233       setCase(holder, model);234       break;235     case TYPE_THREE:236       setThree(holder, model);237       break;238     }239 240     return convertView;241   }242 243   private void setCommon(ViewHolder holder, HomeEdus entity) {244     String content = entity.getDesc();245     int clength = content.length();246     if (clength > 65) {247       content = content.substring(0, 65) + "...";248     }249     holder.tv_content.setMText(content);250 251     String title = entity.getTitle();252     int tlength = title.length();253     if (tlength > 45) {254       title = title.substring(0, 45) + "...";255     }256     holder.tv_title.setMText(title);257     // int height = holder.tv_title.getHeight();258     holder.tv_thumbupNum.setText(entity.getThumbupNum());259     holder.tv_read.setText(entity.getReadNum());260     holder.tv_comment.setText(entity.getCommentNum());261 262     holder.tv_name.setText(entity.getSourceName());263     // if (entity.getHead_img() != null && !entity.getHead_img().equals(""))264     // {265     // ImageLoader.getInstance().displayImage(entity.getHead_img().trim(),266     // holder.img_head, options, animateFirstListener);267     // } else {268     // holder.img_head.setImageResource(R.drawable.pic_head_none_login);269     // }270     if (entity.getPic1() != null271         && !entity.getPic1().equals("")) {272       holder.img_content.setBackground(null);273       ImageLoader.getInstance().displayImage(274           entity.getPic1().trim(), holder.img_content,275           options, animateFirstListener);276     }277   }278 279   private void setCase(ViewHolder holder, HomeEdus entity) {280     String content = entity.getDesc();281     int clength = content.length();282     if (clength > 65) {283       content = content.substring(0, 65) + "...";284     }285     holder.tv_content.setMText(content);286 287     String title = entity.getTitle();288     int tlength = title.length();289     if (tlength > 45) {290       title = title.substring(0, 45) + "...";291     }292     holder.tv_title.setMText(title);293     // int height = holder.tv_title.getHeight();294     holder.tv_thumbupNum.setText(entity.getThumbupNum());295     holder.tv_read.setText(entity.getReadNum());296     holder.tv_comment.setText(entity.getCommentNum());297 298     holder.tv_name.setText(entity.getSourceName());299     if (entity.getPic1() != null300         && !entity.getPic1().equals("")) {301       holder.img_content.setBackground(null);302       ImageLoader.getInstance().displayImage(303           entity.getPic1().trim(), holder.img_content,304           options, animateFirstListener);305     }306   }307 308   private void setThree(ViewHolder holder, HomeEdus entity) {309     String content = entity.getDesc();310     int clength = content.length();311     if (clength > 65) {312       content = content.substring(0, 65) + "...";313     }314     holder.tv_content.setMText(content);315 316     String title = entity.getTitle();317     int tlength = title.length();318     if (tlength > 45) {319       title = title.substring(0, 45) + "...";320     }321     holder.tv_title.setMText(title);322     // int height = holder.tv_title.getHeight();323     holder.tv_thumbupNum.setText(entity.getThumbupNum());324     holder.tv_read.setText(entity.getReadNum());325     holder.tv_comment.setText(entity.getCommentNum());326 327     holder.tv_name.setText(entity.getSourceName());328 329     holder.img_content1.setImageResource(R.drawable.icon_default);330     holder.img_content2.setImageResource(R.drawable.icon_default);331     holder.img_content3.setImageResource(R.drawable.icon_default);332     if (entity.getPic1() != null333         && !entity.getPic1().equals("")) {334       holder.img_content1.setBackground(null);335       ImageLoader.getInstance().displayImage(336           entity.getPic1().trim(), holder.img_content1,337           options, animateFirstListener);338     }339     if (entity.getPic2() != null340         && !entity.getPic2().equals("")) {341       holder.img_content1.setBackground(null);342       ImageLoader.getInstance().displayImage(343           entity.getPic1().trim(), holder.img_content2,344           options, animateFirstListener);345     }346     if (entity.getPic3() != null347         && !entity.getPic3().equals("")) {348       holder.img_content1.setBackground(null);349       ImageLoader.getInstance().displayImage(350           entity.getPic1().trim(), holder.img_content3,351           options, animateFirstListener);352     }353   }354 355   private void setQuestion(ViewHolder holder, HomeEdus entity) {356     String content = entity.getDesc();357     int clength = content.length();358     if (clength > 65) {359       content = content.substring(0, 65) + "...";360     }361     holder.tv_content.setMText(content);362 363     String title = entity.getTitle();364     int tlength = title.length();365     if (tlength > 45) {366       title = title.substring(0, 45) + "...";367     }368     holder.tv_title.setMText(title);369     // int height = holder.tv_title.getHeight();370     holder.tv_thumbupNum.setText(entity.getThumbupNum());371     holder.tv_read.setText(entity.getReadNum());372     holder.tv_comment.setText(entity.getCommentNum());373 374     holder.tv_name.setText(entity.getSourceName());375     376   }377   378   public void setList(List<HomeEdus> list) {379     this.list.clear();380     this.list.addAll(list);381     notifyDataSetChanged();382   }383 384   static class ViewHolder {385     public QSTextView tv_title;386     public QSTextView tv_content;387     public ImageView img_content;388     public TextView tv_name;389 390     public TextView tv_read;391     public TextView tv_comment;392     public TextView tv_thumbupNum;393 394     public ImageView img_content1;395     public ImageView img_content2;396     public ImageView img_content3;397   }398 399   private static class AnimateFirstDisplayListener extends400       SimpleImageLoadingListener {401 402     static final List<String> displayedImages = Collections403         .synchronizedList(new LinkedList<String>());404 405     @Override406     public void onLoadingComplete(String imageUri, View view,407         Bitmap loadedImage) {408       if (loadedImage != null) {409         ImageView imageView = (ImageView) view;410         boolean firstDisplay = !displayedImages.contains(imageUri);411         if (firstDisplay) {412           FadeInBitmapDisplayer.animate(imageView, 500);413           displayedImages.add(imageUri);414         }415       }416     }417   }418 419 }

View Code