Adapter(3)使用适配器的步骤
不论是那种适配器模式,也不管是Listview也好还是gridview也好,对他们填充数据,都是分三步走。
第一:创建一个数据填充的对象,可以是ListView, GridView, Gallery。
第二步:创建一个数据填充器,可以是BaseAdapter、SimpleAdapter,也可以是与数据库相关联的CursorAdapter。
例如:SimpleAdapter可以使用系统封装好的,你也可以自己去继承一个Simpleadapter,来重写其中的方法。继承 simpleadapter的好处在于,你可以对listitem中每个单一的控件设置监听事件等等一系列操作。如果用的是系统封装好的就有点爱莫能助了。
直接使用系统封装的:
SimpleAdapter simpleAdapter = new SimpleAdapter( this, data, R.layout.simple_item, new String[] { "name", "info" }, new int[] { R.id.simple_name, R.id.simple_info });
重写系统的simpleadpter:
import java.util.ArrayList; import java.util.List; import java.util.Map; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.SimpleAdapter; import android.widget.TextView; public class ListSimpleAdapter extends SimpleAdapter { // 要使用到的数据源 private List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); // 填充数据的资源文件 private int resource; private String[] from; private Context context; public ListSimpleAdapter(Context context, List<Map<String, Object>> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); this.context = context; this.data = data; this.resource = resource; this.from = from; } // item的总行数 @Override public int getCount() { // TODO Auto-generated method stub return data == null ? 0 : data.size(); } // item对象 @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } // item的id @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } // 绘制每一个item @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub Holder holder = null; if (convertView == null) { convertView = LayoutInflater.from(context).inflate(resource, null); holder = new Holder(); holder.imageView = (ImageView) convertView .findViewById(R.id.listitem_pic); holder.title = (TextView) convertView .findViewById(R.id.listitem_title); holder.content = (TextView) convertView .findViewById(R.id.listitem_content); convertView.setTag(holder); } else { holder = (Holder) convertView.getTag(); } holder.imageView.setImageResource(Integer.parseInt(data.get(position) .get(from[0]).toString())); holder.title.setText(data.get(position).get(from[1]).toString()); holder.content.setText(data.get(position).get(from[2]).toString()); return convertView; } class Holder { ImageView imageView; TextView title; TextView content; } }
第三步:将数据填充到对象中去
listView.setAdapter(simpleAdapter);

浙公网安备 33010602011771号