cursorAdapter是虚类,继承需要实现两个抽象方法.
下面是关于 bindView()和newView()两个抽象方法需要实现的内容。
- public void bindView(View view, Context context, Cursor cursor)
重用一个已有的view,使其显示当前cursor所指向的数据。 - public View newView(Context context, Cursor cursor, ViewGroup parent)
为cursor所指向的数据新建一个View对象,并显示其数据。 - //类似平时我们使用的adapter的getview里面的这样两段代码
@Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(layout_id_lc, null); viewHolder = new ViewHolder(); viewHolder.cometTExtview = (TextView) convertView .findViewById(ListItemId[0]); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } return convertView;}
- 示例代码如下:
class MyCursorAdapter extends CursorAdapter {
String TAG=this.getClass().getName();
Context context = null;
int viewResId;
public MyCursorAdapter(Context context, int LayoutID, Cursor cursor) {
super(context, cursor);
viewResId = LayoutID;
}
public View newView(Context context, Cursor cursor, ViewGroup parent) {
Log.i(TAG, "in new view");
View view = null;
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = (View) mInflater.inflate(viewResId, parent, false);
return view;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
Log.i(TAG, "in bind view");
TextView nameView = (TextView) view;
nameView.setText( cursor.getString(cursor.getColumnIndex("DISPLAY_NAME")) );
}
}
在实际的应用编写过程中,需要通过适配器(Adapter)来将Cursor与适配器控件联系起来。
Android为Cursor提供了的抽象类 CursorAdapter,就可以方便实现Cursor与适配器的连接。
但这个似乎不是很好的隐藏数据的感觉,毕竟他暴露了低层数据库实现的具体内容.
推荐使用 一些常用的封装好的库来操作.例如 ormlite ..greendao ..androrm 详情见 请点击我