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有点糙,需要改进。

android之自定义SimpleCursorAdapter的使用

时间: 2024-10-24 17:18:49

android之自定义SimpleCursorAdapter的使用的相关文章

【转】Android之自定义Adapter的ListView

http://www.cnblogs.com/topcoderliu/archive/2011/05/07/2039862.html 在开发中,我们经常使用到ListView这个控件.Android的API也提供了许多创建ListView适配器的快捷方式.例如ArrayAdapter.SimpleAdapter和SimpleCursorAdapter等.但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局限在一个行单位.假设一行里面有一个按钮和一个图片控件,它们之间的响应操作是不一样

【原创】android——Tabhost 自定义tab+底部实现+intent切换内容

1,实现tabhost自定义格式,再此仅仅显示背景和文字,效果图预览:(底边栏所示) (图片变形) 2,xml配置 activity_user的XML配置  1 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/tabhost&qu

Android中自定义下拉样式Spinner

Android中自定义下拉样式Spinner 本文继续介绍android自定义控件系列,自定义Spinner控件的使用. 实现思路 1.定义下拉控件布局(ListView及子控件布局) 2.自定义SpinerPopWindow类 3.定义填充数据的Adapter 效果图 一.定义控件布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/

Android peferenceActivity 自定义标题简单方法

Android peferenceActivity 自定义标题简单方法 peferenceActivity 完全使用定义好的布局. 因此不能简单象其它好窗口进行自定,现在我们需要加 一个自定义标题,比如象其它窗口一样加一个统一topbar. 假设这个topbar的布局是 title.xml 一.标准自定义标题栏方法 Android 提供自定义标题栏方法 我们简单实现. @Override protected void onCreate(Bundle savedInstanceState) { f

Android中自定义View的MeasureSpec使用

有时,Android系统控件无法满足我们的需求,因此有必要自定义View.具体方法参见官方开发文档:http://developer.android.com/guide/topics/ui/custom-components.html 一般来说,自定义控件都会去重写View的onMeasure方法,因为该方法指定该控件在屏幕上的大小. protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) onMeasure传

Android复杂自定义Listview实现

在Android中实现Listview对新人来说比较难以理解,本人看了若干文章后觉得可以使用以下思路来让新人更好理解(同时也做好记录,免得自己以后忘记). 可参考博客:http://cinderella7.blog.51cto.com/7607653/1281696  (这里用MVC的思想去理解Listview,个人认为还是不错的) http://blog.csdn.net/jueblog/article/details/11857281   (一个完整的实现) ----------------

Android进阶——自定义View之自己绘制彩虹圆环调色板

引言 前面几篇文章都是关于通过继承系统View和组合现有View来实现自定义View的,刚好由于项目需要实现一个滑动切换LED彩灯颜色的功能,所以需要一个类似调色板的功能,随着手在调色板有效区域滑动,LED彩灯随即显示相应的颜色,也可以通过左右的按钮,按顺序切换显示一组颜色,同时都随着亮度的改变LED彩灯的亮度随即变化,这篇基本上把继承View重绘实现自定义控件的大部分知识总结了下(当然还有蛮多没有涉及到,比如说自适应布局等),源码在Github上 一.继承View绘制自定义控件的通用步骤 自定

android 显示自定义视图对话框

activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button a

Android中自定义ListView无法响应OnItemClickListener中的onItemClick方法问题解决方案

如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView 的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为 false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了 我们可以通过对Item Layout的根控件设置其android:descendantFocusability="blo