BaseAdapter 的getItemViewType和getViewTypeCount

getItemViewType 返回哪一種類型的,然後通過baseadapter的getview(………….)返回視圖;
getViewTypeCount返回有幾種類型的佈局;

假設有需求:這裏寫圖片描述

所以
getViewTypeCount要返回2;
getItemViewType返回你view需要的類型假設爲0和1

public static final int TYPE_TITLE = 0;
    public static final int TYPE_CONTENT = 1;
    public static final int TYPE_CONUT = 2;
 @Override
    public int getItemViewType(int position) {
          if(mList.get(position).getType() == TYPE_TITLE){
               return TYPE_TITLE;
          }else if (mList.get(position).getType() == TYPE_CONTENT){
              return TYPE_CONTENT;
          }
        return  100;

    }

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

adapter的代碼如下

package com.mylayout;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by wanzhciheng .
 *
 */
public class AppliesAdapter extends BaseAdapter {
    public static final int TYPE_TITLE = 0;
    public static final int TYPE_CONTENT = 1;
    public static final int TYPE_CONUT = 2;
    private Context mContext;
    private ArrayList<TypeBase> mList;
    private int mCurrentType;
    private LayoutInflater mInflater;
    public AppliesAdapter(Context context, ArrayList<TypeBase> list){
         this.mContext = context;
         this.mList = list;
        mInflater = LayoutInflater.from(context);
    }

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

    @Override
    public TypeBase getItem(int position) {
        return mList.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View comsumView = null;
        View chargeView = null;
        TypeBase appliesBean = mList.get(position);
        mCurrentType = getItemViewType(position);
        Log.e("SUPPLIES","mCurrentType ==== " + mCurrentType);
        if(mCurrentType == TYPE_TITLE){
            TitleViewHolder titleViewHolder = null;
            if(convertView == null){
                titleViewHolder = new TitleViewHolder();
                comsumView = mInflater.inflate(R.layout.item_title,null);
                titleViewHolder.mTitle = (TextView)comsumView.findViewById(R.id.title_id);
                comsumView.setTag(titleViewHolder);
                convertView = comsumView;

            }else {
                titleViewHolder = (TitleViewHolder)convertView.getTag();
            }
            titleViewHolder.mTitle.setText(appliesBean.getTitle());
        }else if (mCurrentType == TYPE_CONTENT){
            ContentViewHolder contentViewHolder = null;
            if (convertView == null){
                contentViewHolder = new ContentViewHolder();
                chargeView = mInflater.inflate(R.layout.item_content,null);
                contentViewHolder.name = (TextView)chargeView.findViewById(R.id.name);
                contentViewHolder.typeName = (TextView)chargeView.findViewById(R.id.typeName);
                contentViewHolder.des = (TextView)chargeView.findViewById(R.id.des);
                chargeView.setTag(contentViewHolder);
                convertView = chargeView;
            }else {
                contentViewHolder = (ContentViewHolder)convertView.getTag();
            }
            contentViewHolder.name.setText(appliesBean.getName());
            contentViewHolder.typeName.setText(appliesBean.getTypeName());
            contentViewHolder.des.setText(appliesBean.getDescription());
        }


        return convertView;
    }

    @Override
    public int getItemViewType(int position) {
          if(mList.get(position).getType() == TYPE_TITLE){
               return TYPE_TITLE;
          }else if (mList.get(position).getType() == TYPE_CONTENT){
              return TYPE_CONTENT;
          }
        return  100;

    }

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


    class ContentViewHolder{
        TextView name;
        TextView typeName;
        TextView des;
    }

    class TitleViewHolder{
        TextView mTitle;
    }
}

數據初始化

package com.mylayout;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;

import java.util.ArrayList;


public class MainActivity extends ActionBarActivity {
    private ArrayList<TypeBase> list;
    private AppliesAdapter appliesAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listView = (ListView)this.findViewById(R.id.listview);
        list=  new ArrayList<TypeBase>();
        init();
        appliesAdapter = new AppliesAdapter(this,list);

        listView.setAdapter(appliesAdapter);

    }

    private void init() {
        for(int i= 0;i<20;i++){
            TypeBase base = new TypeBase();
            base.setType(0);
            base.setTitle("title" + i);
            list.add(base);
            for(int j = 0;j<5;j++){
                TypeBase base1 = new TypeBase();
                base1.setType(1);
                base1.setDescription("描述" + j);
                base1.setName("name " + j);
                base1.setTypeName("type" + j);
                list.add(base1);
            }

        }
    }

}

很簡單

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章