我必须显示具有不同视图类型的列表.因此,我必须定义一个带有适配器的ListVIEw,在其中必须膨胀多个视图.我已经经历了example,但是问题是我的列表不对称,就像示例在4个项目之后每次重复标题一样.所以我面临在getVIEw()中重复使用项目的问题
public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { int type = getItemVIEwType(position); if (convertVIEw == null) { holder = new VIEwHolder(); switch (type) { case TYPE_1: convertVIEw = mInflater.inflate(R.layout.item1, null); ....... break; case TYPE_2: convertVIEw = mInflater.inflate(R.layout.item2, null); ....... break; } convertVIEw.setTag(holder); } else { holder = (VIEwHolder)convertVIEw.getTag(); } ............ ............}
现在,如果convertVIEw不为null,但是之前使用的项类型不同,则布局将不匹配.此代码将如何处理此问题?
解决方法:
您可以查看此示例适配器. getVIEwTypeCount方法返回您的不同类型的行. getItemVIEwType方法,如果position等于0,则对第一行布局进行膨胀,否则对其他行布局进行膨胀.您可以自定义此代码示例.
import java.util.List; import androID.app.Activity; import androID.vIEw.LayoutInflater; import androID.vIEw.VIEw; import androID.vIEw.VIEwGroup; import androID.Widget.ArrayAdapter; /** * Created by MustafaS on 9.2.2015. */ public class CustomArrayAdapter extends ArrayAdapter<YourModel> { @OverrIDe public int getItemVIEwType(int position) { if (position == 0) { return 0; } else { return 1; } } @OverrIDe public int getVIEwTypeCount() { return 2; } @OverrIDe public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { int type = getItemVIEwType(position); if (type == 0) { if (convertVIEw == null) { convertVIEw = LayoutInflater.from(activity).inflate(R.layout.ListvIEw_first_row, parent, false); vIEwHolderFirst = new VIEwHolderFirst(); convertVIEw.setTag(vIEwHolderFirst); } else { vIEwHolderFirst = (VIEwHolderFirst) convertVIEw.getTag(); } } else { if (convertVIEw == null) { convertVIEw = LayoutInflater.from(activity).inflate(R.layout.ListvIEw_other_row, parent, false); vIEwHolder = new VIEwHolder(); } else { vIEwHolder = (VIEwHolder) convertVIEw.getTag(); } } return convertVIEw; } protected class VIEwHolderFirst { private RunnableVIEwPager pager; private CircleIndicator indicator; } protected class VIEwHolder { private ImageVIEw imagevIEwRestaurant; private TextVIEw textvIEwRestaurantname; private TextVIEw textvIEwType; private TextVIEw textvIEwPrice; private TextVIEw textvIEwdistance; private ImageVIEw imagevIEwCall; private ImageVIEw imagevIEwCalendar; } }
总结 以上是内存溢出为你收集整理的具有多个布局的Android ListView全部内容,希望文章能够帮你解决具有多个布局的Android ListView所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)