Android_自訂簡便快速通用的SimpleBaseAdapter

來源:互聯網
上載者:User

標籤:android   listview   adapter   baseadapter   

public abstract class SimpleBaseAdapter<T> extends BaseAdapter {protected Context context;protected List<T> data;public SimpleBaseAdapter(Context context){this(context, null);}public SimpleBaseAdapter(Context context, List<T> data) {this.context = context;this.data = data == null ? new ArrayList<T>() : new ArrayList<T>(data);}@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {if (position >= data.size())return null;return data.get(position);}@Overridepublic long getItemId(int position) {return position;}/** * 該方法需要子類實現,需要返回item布局的resource id *  * @return */public abstract int getItemResource();/** * 使用該getItemView方法替換原來的getView方法,需要子類實現 *  * @param position * @param convertView * @param parent * @param holder * @return */public abstract View getItemView(int position, View convertView, ViewHolder holder);@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if (null == convertView) {convertView = View.inflate(context, getItemResource(), null);holder = new ViewHolder(convertView);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}return getItemView(position, convertView, holder);}public class ViewHolder {private SparseArray<View> views = new SparseArray<View>();private View convertView;public ViewHolder(View convertView) {this.convertView = convertView;}@SuppressWarnings("unchecked")public <T extends View> T getView(int resId) {View v = views.get(resId);if (v == null) {v = convertView.findViewById(resId);views.put(resId, v);}return (T) v;}}public void addAll(List<T> elem) {data.addAll(elem);notifyDataSetChanged();}public void remove(T elem) {data.remove(elem);notifyDataSetChanged();}public void remove(int index) {data.remove(index);notifyDataSetChanged();}public void replaceAll(List<T> elem) {data.clear();data.addAll(elem);notifyDataSetChanged();}}

執行個體代碼

private class MyAdapter extends SimpleBaseAdapter<String> {public MyAdapter(Context context, List<String> data) {super(context, data);}@Overridepublic int getItemResource() {return R.layout.layout_item;}@Overridepublic View getItemView(int position, View convertView, SimpleBaseAdapter<String>.ViewHolder holder) {TextView tvIndex = holder.getView(R.id.item_index);TextView tvContent = holder.getView(R.id.item_content);tvIndex.setText("p:" + position);tvContent.setText(getItem(position).toString());return convertView;}}

Android_自訂簡便快速通用的SimpleBaseAdapter

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.