BaseAdapter

package com.leamiko.common.widget.adapter;

import java.util.ArrayList;
import java.util.List;

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

/**
 * Extents from BaseAdapter RTAdapter.java
 * 
 * @param <T>
 */
public abstract class BaseAdapter<T> extends BaseAdapter {

        private List<T> mList = new ArrayList<T>();

        /**
         * Set data list to Adapter
         * 
         * @param list
         */
        protected void setList(List<T> list) {
                if (list != null) {
                        mList.addAll(list);
                } else {
                        throw new NullPointerException();
                }
        }

        /**
         * Clear data list and reset it, update ListView
         * 
         * @param list
         */
        public void notifyDateSetUpdate(List<T> list) {
                if (list != null && mList.size() > 0) {
                        mList.clear();
                        mList.addAll(list);
                        notifyDataSetChanged();
                }
        }

        /**
         * Get data list
         * 
         * @return
         */
        public List<T> getList() {
                return mList;
        }

        /**
         * Append data list to bottom of the ListView
         * 
         * @param list
         */
        public void appendToBottomList(List<T> list) {
                if (list == null) {
                        return;
                }
                mList.addAll(list);
                notifyDataSetChanged();
        }

        /**
         * Append data list to top of the ListView
         * 
         * @param list
         */
        public void appendToTopList(List<T> list) {
                if (list == null) {
                        return;
                }
                mList.addAll(0, list);
                notifyDataSetChanged();
        }

        /**
         * Clear all the data and update ListView
         */
        public void clear() {
                mList.clear();
                notifyDataSetChanged();
        }

        /* BaseAdapter methods */
        @Override
        public int getCount() {
                return mList.size();
        }

        @Override
        public Object getItem(int position) {
                if (position > mList.size() - 1) {
                        return null;
                }
                return mList.get(position);
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                return getItemView(position, convertView, parent);
        }

        /**
         * Custom item view in your subclass
         * 
         * @param position
         * @param convertView
         * @param parent
         * @return
         */
        protected abstract View getItemView(int position, View convertView,
                        ViewGroup parent);

}
原文地址:https://www.cnblogs.com/leamiko/p/3510957.html