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的布局。

原文地址:https://www.cnblogs.com/muyuge/p/6333563.html