ListView中item加载不同布局

前言
Android中的ListView,大家可能已经很熟悉了,用起来也算是得心应手。可能你见过一个ListView中展示了不同的布局,或许你会说,这种方式实现起来很简单,在item的布局文件中通过visibility来动态显示、隐藏view,即可实现这种效果。

即使是我的同事,让他实现这样的不同布局,依然采用的是以上方式,完全不知道BaseAdapter已经为我们提供了多种不同布局的item的实现方式。

声明一个继承BaseAdapter的Adapter
在子adapter中重写父类的getViewTypeCount和getItemViewType方法,顾名思义:

    getViewTypeCount表示不同的item布局类型的数量
    getItemViewType表示不同布局的item的类型


    class TypeAdapter extends BaseAdapter {

    @Override 
    public int getCount() { 
         return list.size(); 
    }                

    @Override
    public int getItemViewType(int position) {
       return list.get(position).getType();
    }          

    @Override 
    public int getViewTypeCount() { 
       return 2; 
    }

   @Override
   public Object getItem(int position) { 
       return list.get(position);
   }

   @Override 
   public long getItemId(int position) { 
         return position; 
    }


   @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
        ViewHolder holder; 
        if (convertView == null) {
            switch (getItemViewType(position)) {
            case 0:
                  convertView =  LayoutInflater.from(MainActivity.this).inflate(R.layout.type1, null);                         break;      
            case 1: 
                  convertView   =LayoutInflater.from(MainActivity.this).inflate(R.layout.type2, null);

          }
         holder = new ViewHolder(); 
         convertView.setTag(holder); 
        } else {
          holder = (ViewHolder) convertView.getTag(); } return convertView;
      }
 }

这样就可以在getView方法中通过不同的view type,来inflate不同的item布局,后面对不同item的数据填充,都可以利用getItemViewType进行分别设置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容