zoukankan      html  css  js  c++  java
  • android ListView加载不同布局

    今天来跟大家讨论下同一个ListView如何加载不同的布局。
    老规矩,先来看效果图。
    这里写图片描述
    主要步骤如下

    • 1.增加Type。
    • 2.重写getViewTypeCount方法。
    • 3.重写getItemViewType方法。

    • 4.重写getView方法。

    1.增加Type

    我们这里只有2种type;故

    private final int TYPE_01 = 0;
    private final int TYPE_02 = 1;

    2.重写getViewTypeCount方法。因为只有2个,所以这里直接返回2了。

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

    3.重写getItemViewType方法。

    这里是根据不同的pos来判断布局。

      @Override
        public int getItemViewType(int position) {
            if(position==0) return TYPE_01;
        else
            return TYPE_02;
        }

    4.重写getView

    跟普通的getView一样,只不过多了一个switch的过程

      @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            ViewHolder viewHolder=null;
            int type = getItemViewType(i);
            if(view == null){
                switch (type){
                    case TYPE_01:
                        view = mInflater.inflate(R.layout.item_main_top,null);
                        final Switch mSwitch = (Switch) view.findViewById(R.id.switch_list_main);
    
                                           }
                                } else {
                                    //close the LocationService
                        break;
                    case TYPE_02:
                        view = mInflater.inflate(R.layout.item_main,null);
                        viewHolder = new ViewHolder();
                        viewHolder.mTextView = (TextView) view.findViewById(R.id.textView_item_main);
                        view.setTag(viewHolder);
                        break;
                }
            }else{
                switch (type){
                    case TYPE_02:
                        viewHolder = (ViewHolder) view.getTag();
    
                        break;
                }
            }
            switch(type) {
                case TYPE_02:
                viewHolder.mTextView.setText(mStringArr[i-1]);
    
                    break;
            }
    
            return view;
        }

    这样便可对ListView加载不同Type的布局。

  • 相关阅读:
    5.2 spring5源码--spring AOP源码分析三---切面源码分析
    5.2 spring5源码--spring AOP源码分析二--切面的配置方式
    在Dubbo中使用Zookeeper入门案例
    Dubbo直连方式改造
    Dubbo直连方式
    16.3.3 对矢量可执行的其它操作
    16.3.2 可对矢量(vector)执行的操作
    16.3 标准模板库
    16.2.2 有关智能指针的注意事项
    16.2.1 使用智能指针
  • 原文地址:https://www.cnblogs.com/muyuge/p/6333563.html
Copyright © 2011-2022 走看看