美文网首页android进阶android基本功
ListView中item加载不同布局

ListView中item加载不同布局

作者: MAKEWIEH | 来源:发表于2016-06-01 21:37 被阅读1002次

    前言
    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进行分别设置。

    相关文章

      网友评论

        本文标题:ListView中item加载不同布局

        本文链接:https://www.haomeiwen.com/subject/cawhdttx.html