1. 程式人生 > >Android常用的Adapter

Android常用的Adapter

col arr 其他 pri from inflater rri android中 textview

Android中常用的Adapter有ArrayAdapter、SimpleAdapter、SimpleCursorAdapter以及繼承BaseAdapter的各種用戶自定義Adapter;

這並不說前面三種Adapter不可繼承,它們也是可以繼承的,關於前面三種Adapter的具體使用可以參考網上的其他博客。

本篇博客主要記錄繼承BaseAdapter自定義Adapter的常規寫法

public class MyAdapter extends  BaseAdapter{

    private List<Fish> list = new ArrayList<>();

    
private Context context; private LayoutInflater inflater; public MyAdapter(Context context, List<Fish> list){ this.context = context; this.list = list; inflater = LayoutInflater.from(context); } @Override public int getCount(){ return list.size(); } @Override
public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position){ return position; } @Override public View getView(int position, View convertView, ViewGroup parent){ ViewHolder viewHolder;
if (convertView == null){ viewHolder = new ViewHolder(); convertView = inflater.inflate(R.layout.list_item, null); viewHolder.textView = (TextView)convertView.findViewById(R.id.text_item); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder)convertView.getTag(); } ActivityAttr activityAttr = list.get(position); viewHolder.textView.setText(activityAttr.getName()); return convertView; } class ViewHolder{ TextView textView; } }

上面的getCount、getItem、getItemId、getView四個方法都需要重寫,viewHold和convertView主要為了提高list的流暢性,減小系統開銷

其中viewHold可以讓程序只有第一次加載時才需要用findViewById去加載相應組件,而convertView可以緩存已經顯示過的list,第二個顯示不需要再次加載,直接顯示即可

Android常用的Adapter