Android listview多视图嵌套多视图
程序员文章站
2024-02-22 10:34:34
首先给大家展示下效果图:
public class homeedumoreadapter extends baseadapter {
private fin...
首先给大家展示下效果图:
public class homeedumoreadapter extends baseadapter { private final string tag = "homeedumoreadapter"; private static final int type_common = ; private static final int type_bl = ; private static final int type_none = ; private static final int type_three = ; private static final int type_question = ; private int type_count = ; private layoutinflater inflater; private list<homeedus> list; private context context; private displayimageoptions options; private imageloadinglistener animatefirstlistener = new animatefirstdisplaylistener(); public homeedumoreadapter(context context, list<homeedus> objects) { this.context = context; // groupuserdao = new groupuserdao(context); inflater = layoutinflater.from(context); list = objects; options = new displayimageoptions.builder().cacheinmemory(true) .imagescaletype(imagescaletype.in_sample_int) .bitmapconfig(bitmap.config.rgb_).cacheondisk(true) .showimageonloading(r.drawable.icon_default)// 设置图片在下载期间显示的图片 .showimageforemptyuri(r.drawable.icon_default)// 设置图片uri为空或是错误的时候显示的图片 .showimageonfail(r.drawable.icon_default)// 设置图片加载/解码过程中错误时候显示的图片 .considerexifparams(true).build(); } @override public int getcount() { // todo auto-generated method stub return list.size(); } @override public int getviewtypecount() { // todo auto-generated method stub return type_count; } @override public homeedus getitem(int position) { // todo auto-generated method stub return list.get(position); } @override public long getitemid(int postion) { // todo auto-generated method stub return postion; } @override public int getitemviewtype(int position) { // todo auto-generated method stub homeedus edus = getitem(position); string type = edus.gettype();// 菜单类型 int result = type_common; switch (type) { case "hx": result = type_common; break; case "wd": if (edus.getpic() == null || edus.getpic().equals("")) { result = type_question; }else { result = type_common; } break; case "jt": result = type_common; break; case "bl": result = type_bl; break; default: string jx = edus.gettype();// 精选内容类型 switch (jx) { default: integer imgnum = integer.parseint(edus.getimgnum()); if (imgnum != null && imgnum > && imgnum < ) { result = type_common; } else if (imgnum != null && imgnum >= ) { result = type_three; } else { result = type_none; } break; } break; } return result; } @override public view getview(int position, view convertview, viewgroup parent) { // todo auto-generated method stub final homeedus model = getitem(position); int type = getitemviewtype(position); final viewholder holder; if (convertview == null) { holder = new viewholder(); windowmanager manager = (windowmanager) context .getsystemservice(context.window_service); int width = manager.getdefaultdisplay().getwidth(); int height = manager.getdefaultdisplay().getwidth() / ; switch (type) { case type_common: convertview = inflater.inflate(r.layout.item_home_edus, null); holder.tv_content = (qstextview) convertview .findviewbyid(r.id.tv_content); holder.tv_content.settextcolor(color.gray); holder.tv_title = (qstextview) convertview .findviewbyid(r.id.tv_title); holder.tv_name = (textview) convertview .findviewbyid(r.id.tv_name); // holder.img_head = (circleimageview) convertview // .findviewbyid(r.id.img_head); holder.img_content = (imageview) convertview .findviewbyid(r.id.img_content); holder.tv_read = (textview) convertview .findviewbyid(r.id.tv_read); holder.tv_comment = (textview) convertview .findviewbyid(r.id.tv_comment); holder.tv_thumbupnum = (textview) convertview .findviewbyid(r.id.tv_thumbupnum); break; case type_question: convertview = inflater.inflate(r.layout.item_home_question, null); holder.tv_content = (qstextview) convertview .findviewbyid(r.id.tv_content); holder.tv_content.settextcolor(color.gray); holder.tv_title = (qstextview) convertview .findviewbyid(r.id.tv_title); holder.tv_name = (textview) convertview .findviewbyid(r.id.tv_name); holder.tv_read = (textview) convertview .findviewbyid(r.id.tv_read); holder.tv_comment = (textview) convertview .findviewbyid(r.id.tv_comment); holder.tv_thumbupnum = (textview) convertview .findviewbyid(r.id.tv_thumbupnum); break; case type_bl: case type_none: convertview = inflater.inflate(r.layout.item_home_case, null); holder.tv_content = (qstextview) convertview .findviewbyid(r.id.tv_content); holder.tv_content.settextcolor(color.gray); holder.tv_title = (qstextview) convertview .findviewbyid(r.id.tv_title); holder.tv_name = (textview) convertview .findviewbyid(r.id.tv_name); holder.img_content = (imageview) convertview .findviewbyid(r.id.img_content); layoutparams para = holder.img_content.getlayoutparams(); para.height = height; para.width = width; holder.img_content.setlayoutparams(para); holder.tv_read = (textview) convertview .findviewbyid(r.id.tv_read); holder.tv_comment = (textview) convertview .findviewbyid(r.id.tv_comment); holder.tv_thumbupnum = (textview) convertview .findviewbyid(r.id.tv_thumbupnum); break; case type_three: convertview = inflater.inflate(r.layout.item_home_three, null); holder.tv_content = (qstextview) convertview .findviewbyid(r.id.tv_content); holder.tv_content.settextcolor(color.gray); holder.tv_title = (qstextview) convertview .findviewbyid(r.id.tv_title); holder.tv_name = (textview) convertview .findviewbyid(r.id.tv_name); holder.img_content = (imageview) convertview .findviewbyid(r.id.img_content); holder.img_content = (imageview) convertview .findviewbyid(r.id.img_content); holder.img_content = (imageview) convertview .findviewbyid(r.id.img_content); int w = width / ; layoutparams p = holder.img_content.getlayoutparams(); p.height = (int)(w*.f); p.width = w; holder.img_content.setlayoutparams(p); p = holder.img_content.getlayoutparams(); p.height = (int)(w*.f); p.width = w; holder.img_content.setlayoutparams(p); p = holder.img_content.getlayoutparams(); p.height = (int)(w*.f); p.width = w; holder.img_content.setlayoutparams(p); holder.tv_read = (textview) convertview .findviewbyid(r.id.tv_read); holder.tv_comment = (textview) convertview .findviewbyid(r.id.tv_comment); holder.tv_thumbupnum = (textview) convertview .findviewbyid(r.id.tv_thumbupnum); break; } convertview.settag(holder); } else { holder = (viewholder) convertview.gettag(); } switch (type) { case type_common: case type_bl: setcommon(holder, model); break; case type_question: setquestion(holder,model); break; case type_none: setcase(holder, model); break; case type_three: setthree(holder, model); break; } return convertview; } private void setcommon(viewholder holder, homeedus entity) { string content = entity.getdesc(); int clength = content.length(); if (clength > ) { content = content.substring(, ) + "..."; } holder.tv_content.setmtext(content); string title = entity.gettitle(); int tlength = title.length(); if (tlength > ) { title = title.substring(, ) + "..."; } holder.tv_title.setmtext(title); // int height = holder.tv_title.getheight(); holder.tv_thumbupnum.settext(entity.getthumbupnum()); holder.tv_read.settext(entity.getreadnum()); holder.tv_comment.settext(entity.getcommentnum()); holder.tv_name.settext(entity.getsourcename()); // if (entity.gethead_img() != null && !entity.gethead_img().equals("")) // { // imageloader.getinstance().displayimage(entity.gethead_img().trim(), // holder.img_head, options, animatefirstlistener); // } else { // holder.img_head.setimageresource(r.drawable.pic_head_none_login); // } if (entity.getpic() != null && !entity.getpic().equals("")) { holder.img_content.setbackground(null); imageloader.getinstance().displayimage( entity.getpic().trim(), holder.img_content, options, animatefirstlistener); } } private void setcase(viewholder holder, homeedus entity) { string content = entity.getdesc(); int clength = content.length(); if (clength > ) { content = content.substring(, ) + "..."; } holder.tv_content.setmtext(content); string title = entity.gettitle(); int tlength = title.length(); if (tlength > ) { title = title.substring(, ) + "..."; } holder.tv_title.setmtext(title); // int height = holder.tv_title.getheight(); holder.tv_thumbupnum.settext(entity.getthumbupnum()); holder.tv_read.settext(entity.getreadnum()); holder.tv_comment.settext(entity.getcommentnum()); holder.tv_name.settext(entity.getsourcename()); if (entity.getpic() != null && !entity.getpic().equals("")) { holder.img_content.setbackground(null); imageloader.getinstance().displayimage( entity.getpic().trim(), holder.img_content, options, animatefirstlistener); } } private void setthree(viewholder holder, homeedus entity) { string content = entity.getdesc(); int clength = content.length(); if (clength > ) { content = content.substring(, ) + "..."; } holder.tv_content.setmtext(content); string title = entity.gettitle(); int tlength = title.length(); if (tlength > ) { title = title.substring(, ) + "..."; } holder.tv_title.setmtext(title); // int height = holder.tv_title.getheight(); holder.tv_thumbupnum.settext(entity.getthumbupnum()); holder.tv_read.settext(entity.getreadnum()); holder.tv_comment.settext(entity.getcommentnum()); holder.tv_name.settext(entity.getsourcename()); holder.img_content.setimageresource(r.drawable.icon_default); holder.img_content.setimageresource(r.drawable.icon_default); holder.img_content.setimageresource(r.drawable.icon_default); if (entity.getpic() != null && !entity.getpic().equals("")) { holder.img_content.setbackground(null); imageloader.getinstance().displayimage( entity.getpic().trim(), holder.img_content, options, animatefirstlistener); } if (entity.getpic() != null && !entity.getpic().equals("")) { holder.img_content.setbackground(null); imageloader.getinstance().displayimage( entity.getpic().trim(), holder.img_content, options, animatefirstlistener); } if (entity.getpic() != null && !entity.getpic().equals("")) { holder.img_content.setbackground(null); imageloader.getinstance().displayimage( entity.getpic().trim(), holder.img_content, options, animatefirstlistener); } } private void setquestion(viewholder holder, homeedus entity) { string content = entity.getdesc(); int clength = content.length(); if (clength > ) { content = content.substring(, ) + "..."; } holder.tv_content.setmtext(content); string title = entity.gettitle(); int tlength = title.length(); if (tlength > ) { title = title.substring(, ) + "..."; } holder.tv_title.setmtext(title); // int height = holder.tv_title.getheight(); holder.tv_thumbupnum.settext(entity.getthumbupnum()); holder.tv_read.settext(entity.getreadnum()); holder.tv_comment.settext(entity.getcommentnum()); holder.tv_name.settext(entity.getsourcename()); } public void setlist(list<homeedus> list) { this.list.clear(); this.list.addall(list); notifydatasetchanged(); } static class viewholder { public qstextview tv_title; public qstextview tv_content; public imageview img_content; public textview tv_name; public textview tv_read; public textview tv_comment; public textview tv_thumbupnum; public imageview img_content; public imageview img_content; public imageview img_content; } private static class animatefirstdisplaylistener extends simpleimageloadinglistener { static final list<string> displayedimages = collections .synchronizedlist(new linkedlist<string>()); @override public void onloadingcomplete(string imageuri, view view, bitmap loadedimage) { if (loadedimage != null) { imageview imageview = (imageview) view; boolean firstdisplay = !displayedimages.contains(imageuri); if (firstdisplay) { fadeinbitmapdisplayer.animate(imageview, ); displayedimages.add(imageuri); } } } } }