具有多个布局的Android ListView

具有多个布局的Android ListView,第1张

概述我必须显示具有不同视图类型的列表.因此,我必须定义一个带有适配器的ListView,在其中必须膨胀多个视图.我已经经历了example,但是问题是我的列表不对称,就像示例在4个项目之后每次重复标题一样.所以我面临在getView()中重复使用项目的问题publicViewgetView(intposition,Vie

我必须显示具有不同视图类型的列表.因此,我必须定义一个带有适配器的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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1078660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存