安卓:将数据库中的数据查询出来用adapter(SimpleAdapter,SimpleCursorAdapter,自定义适配器CursorAdapter)绑定到listview上

SimpleAdapter,SimpleCursorAdapter,自定义适配器CursorAdapter绑定数据库中的数据到控件并显示


注意:在配置文件中加入权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
将数据库放到外部存储storage/Download文件下


结果如图:

第一种:SimpleAdapter

逻辑代码文件:

<span style="font-size:18px;">package com.example.day14_sqlitedb;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

	ListView lv;
	List<Map<String, Object>> list;
	SQLiteDatabase db;
	 String path = Environment.getExternalStorageDirectory().
	 getAbsolutePath()+File.separator+"Download"+File.separator+"test.db";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		lv = (ListView) findViewById(R.id.lv);
		db = SQLiteDatabase.openDatabase(path, null,
				SQLiteDatabase.OPEN_READWRITE);
		SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(),
				getData(), R.layout.style, new String[] { "name", "sex", "age",
						"love" }, new int[] { R.id.name, R.id.sex, R.id.age,
						R.id.love });
		lv.setAdapter(adapter);

	}

	public List<Map<String, Object>> getData() {
		list = new ArrayList<Map<String, Object>>();
		String sql = "select * from person";
		Cursor cursor = db.rawQuery(sql, null);
		while (cursor.moveToNext()) {
			Map<String, Object> map = new HashMap<String, Object>();
			String name = cursor.getString(cursor.getColumnIndex("name"));
			String sex = cursor.getString(cursor.getColumnIndex("sex"));
			int age = cursor.getInt(cursor.getColumnIndex("age"));
			String love = cursor.getString(cursor.getColumnIndex("love"));
			map.put("name", name);
			map.put("sex", sex);
			map.put("age", age);
			map.put("love", love);
			list.add(map);
		}
		return list;
	}

}
</span>

第二种SimpleCursorAdapter:

逻辑代码文件:

<span style="font-size:18px;">package com.SimpleCursorAdapter;

import java.io.File;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.widget.SimpleCursorAdapter;
import android.widget.ListView;

import com.example.day14_sqlitedb.R;

public class SimpleCursoradapter extends Activity {

	ListView lv;
	SQLiteDatabase db;
	String path = Environment.getExternalStorageDirectory().getAbsolutePath()
			+ File.separator + "Download" + File.separator + "test.db";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		lv = (ListView) findViewById(R.id.lv);
		db = SQLiteDatabase.openDatabase(path, null,
				SQLiteDatabase.OPEN_READWRITE);
		Cursor c = db.rawQuery("select * from person", null);
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(
				getApplicationContext(), R.layout.style, c, new String[] {
						"name", "sex", "age", "love" }, new int[] { R.id.name,
						R.id.sex, R.id.age, R.id.love },
				SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
		lv.setAdapter(adapter);

	}
}
</span>

第三种自定义适配器CursorAdapter:

<span style="font-size:18px;">package com.zidiyiAdapter;

import java.io.File;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;

import com.example.day14_sqlitedb.R;

public class MyCursorAdapter extends Activity{

	ListView lv;
	SQLiteDatabase db;
	String path = Environment.getExternalStorageDirectory().getAbsolutePath()
			+ File.separator + "Download" + File.separator + "test.db";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		lv=(ListView) findViewById(R.id.lv);
		db=SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);
		String sql="select * from person";
		Cursor c=db.rawQuery(sql, null);
		MyAdapter adapter=new MyAdapter(getApplicationContext(), c);	
		
	}
	public class MyAdapter extends CursorAdapter
	{

		public MyAdapter(Context context, Cursor c) {
			super(context, c);
			// TODO Auto-generated constructor stub
		}
		// newView 返回item布局  view 给 bindView
		@Override
		public View newView(Context context, Cursor c, ViewGroup parent) {
			return LayoutInflater.from(context).inflate(R.layout.style,null);
		}
		// 参数1:newVIew 里返回的View视图
		@Override
		public void bindView(View view, Context context, Cursor c) {
			TextView name=(TextView) view.findViewById(R.id.name);
			TextView sex=(TextView) view.findViewById(R.id.sex);
			TextView age=(TextView) view.findViewById(R.id.age);
			TextView love=(TextView) view.findViewById(R.id.love);
			name.setText(c.getString(c.getColumnIndex("name")));
			sex.setText(c.getString(c.getColumnIndex("sex")));
			age.setText(c.getInt(c.getColumnIndex("age")));
			love.setText(c.getString(c.getColumnIndex("love")));

			
		}
		
	}
}
</span>

三种共用的主布局文件:

<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</RelativeLayout>
</span>

三种共用的样式布局文件:

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    <TextView 
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#00ff00"
        android:textSize="22sp"/>
	<TextView 
        android:id="@+id/sex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#00ff00"
        android:textSize="22sp"/>
    <TextView 
        android:id="@+id/age"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#00ff00"
        android:textSize="22sp"/>
	<TextView 
        android:id="@+id/love"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#00ff00"
        android:textSize="22sp"/>
    
</LinearLayout>
</span>



  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值