安卓适配器 baseadpter cursoradapter

CursorAdapter继承于BaseAdapter,它是个虚类,它为cursor和ListView提供了连接的桥梁。

newView该函数第一次回调用后,如果数据增加后也会再调用,但是重绘是不会调用的。数据增加后,回调用该函数来生成与新增数据相对应的view。
bindView函数第一次回调用后,如果数据更新也会再调用,但重绘会再次调用的。

添加适配器 这样ListView就会显示出来

private ListView mListView;

adapter = new ConversationAdapter(this, null);
mListView.setAdapter(adapter);

CursorAdapter

private class ConversationAdapter extends CursorAdapter{

    private LayoutInflater inflater;  //获得上下文环境
    public ConversationAdapter(Context context, Cursor c) {
	super(context, c);
	// TODO Auto-generated constructor stub
	inflater = LayoutInflater.from(context);
    }
    
    //在适配器第一次适配时 调用的方法,通常在该方法里 完成控件的加载
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        View view = inflater.inflate(R.layout.conversation_item, parent, false);
        
        CheckBox checkbox = (CheckBox) view.findViewById(R.id.checkbox);  //获得控件
        
        view.setTag(checkbox);
			
	return view;
    }

    //完成数据的绑定		
    public void bindView(View view, Context context, Cursor cursor) {
        CheckBox checkbox = (CheckBox)view.getTag();
        
        checkbox.setChecked(true); 
    }
			
}

BaseAdapter

将一组数据传到像ListViewgetView()方法,它是将获取数据后的View组件返回

private final static int[] images = new int[]{R.drawable.a_f_inbox,R.drawable.a_f_outbox,R.drawable.a_f_sent,R.drawable.a_f_draft};
private final static int[] names = new int[]{R.string.inbox,R.string.outbox,R.string.sent,R.string.draft};

private final class FolderAdapter extends BaseAdapter{

    public int getCount() {
	return images.length;  //控件总个数 
    }

    public Object getItem(int position) {
	return names[position];  //控件的名字
    }

    public long getItemId(int position) {
	return position;   //当前控件的位置
    }

    //这里完成获得和绑定
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
	FolderViews views = null;
	if(convertView != null){
	    view = convertView;
	    views = (FolderViews) view.getTag();
	}else{
	    view = getLayoutInflater().inflate(R.layout.folder_item, parent, false);
	    views = new FolderViews();
	    views.header = (ImageView) view.findViewById(R.id.header);
	    views.tv_name = (TextView) view.findViewById(R.id.tv_name);
	    view.setTag(views);
	}

	//绑定数据
	views.header.setImageResource(images[position]);
	views.tv_name.setText(names[position]);
	return view;
    }
			
}

private final class FolderViews{
    ImageView header;
    TextView tv_name;
}

BaseAdapter 使用ContentObserver 判断如果发生改变,就重新查询更新


你可能感兴趣的:(CursorAdapter,安卓适配器,baseadpter)