首页 > 代码库 > android之自定义SimpleCursorAdapter的使用
android之自定义SimpleCursorAdapter的使用
SimpleCursorAdapter直接使用的方法:
SimpleCursorAdapter允许你绑定一个游标的列到ListView上,并使用自定义的layout显示每个项目。
SimpleCursorAdapter的创建,需要传入当前的上下文、一个layout资源,一个游标和两个数组:一个包含使用的列的名字,另一个(相同大小)数组包含View中的资源ID,用于显示相应列的数据值。
//第一步:从数据库读取数据 dbHelper = new DBHelper(HistoryOrderActivity.this); database = dbHelper.getWritableDatabase(); cursor = database.rawQuery("SELECT * FROM "+DBHelper.TABLE_ORDER+" where feedbackTime is not null", null); //startManagingCursor(cursor); 被遗弃的方法,主要是把cursor的生命周期交由Activity管理 String[] fromColumns = new String[] { "orderDescription", "orderEffectiveTime", "orderConsumeTime", "promotion", "feedbackInfo", "feedbackTime", }; int[] toLayoutIDs = new int[] { R.id.description, R.id.effectiveTime, R.id.consumeTime, R.id.promotion, R.id.feedbackInfo, R.id.feedbackTime}; adapter = new SimpleCursorAdapter(this, R.layout.histortyorder, cursor, fromColumns, toLayoutIDs,0);
SimpleCursorAdapter自定义的使用:
//第一步:从数据库读取数据 dbHelper = new DBHelper(HistoryOrderActivity.this); database = dbHelper.getWritableDatabase(); cursor = database.rawQuery("SELECT * FROM "+DBHelper.TABLE_ORDER+" where feedbackTime is not null", null); //startManagingCursor(cursor); 被遗弃的方法,主要是把cursor的生命周期交由Activity管理 String[] fromColumns = new String[] { "orderDescription", "orderEffectiveTime", "orderConsumeTime", "promotion", "feedbackInfo", "feedbackTime", }; int[] toLayoutIDs = new int[] { R.id.description, R.id.effectiveTime, R.id.consumeTime, R.id.promotion, R.id.feedbackInfo, R.id.feedbackTime}; if (cursor == null) { return; } adapter = new HistoryOrderAdapter(HistoryOrderActivity.this, R.layout.histortyorder, cursor, fromColumns, toLayoutIDs, 0);
适配器的实现:
public class HistoryOrderAdapter extends SimpleCursorAdapter { private Cursor m_cursor; private Context m_context; private LayoutInflater miInflater; public HistoryOrderAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { super(context, layout, c, from, to, flags); m_context = context; m_cursor = c; } @Override public void bindView(View arg0, Context arg1, Cursor arg2) { View convertView = null; if (arg0 == null) { convertView = miInflater.inflate(R.layout.histortyorder, null); } else { convertView = arg0; } TextView tv_Description = (TextView) convertView .findViewById(R.id.description); TextView tv_EffectiveTime = (TextView) convertView .findViewById(R.id.effectiveTime); TextView tv_ConsumeTime = (TextView) convertView .findViewById(R.id.consumeTime); TextView tv_promotion = (TextView) convertView .findViewById(R.id.promotion); TextView tv_FeedbackInfo = (TextView) convertView .findViewById(R.id.feedbackInfo); TextView tv_FeedbackTime = (TextView) convertView .findViewById(R.id.feedbackTime); tv_Description.setText(arg2.getString(arg2 .getColumnIndex("orderDescription"))); tv_EffectiveTime.setText(ShopUtils.changeTimestampToTime(Long .valueOf(arg2.getString(arg2 .getColumnIndex("orderEffectiveTime"))))); tv_ConsumeTime .setText(ShopUtils.changeTimestampToTime(Long.valueOf(arg2 .getString(arg2.getColumnIndex("orderConsumeTime"))))); tv_promotion.setText(arg2.getString(arg2.getColumnIndex("promotion"))); tv_FeedbackInfo.setText(arg2.getString(arg2 .getColumnIndex("feedbackInfo"))); tv_FeedbackTime.setText(ShopUtils.changeTimestampToTime(Long .valueOf(arg2.getString(arg2.getColumnIndex("feedbackTime"))))); } }
HistoryOrderAdapter有点糙,需要改进。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。