方法一:
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
private ListView lv;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
String path = Environment.getExternalStorageDirectory().
getAbsolutePath()+File.separator+"info.db";//File.separator+"Download"+
/**
* openDatabase 用来打开数据库操作
* 参数1:文件的路径
* 参数2:游标工厂 null
* 参数3: flag 标记 可读写操作
*/
db = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);
//得到adapter对象
SimpleAdapter adapter = new SimpleAdapter
(MainActivity.this, getDbData(),
R.layout.item, new String[]{"_id","name"},
new int[]{R.id.tv_id,R.id.tv_name});
//将数据填充到lv
lv.setAdapter(adapter);
}
/**
* 从数据库中获取数据
* @return
*/
public List<Map<String,Object>> getDbData(){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Cursor cursor = db.query("person", null, null, null, null, null, null);
while(cursor.moveToNext()){
Map<String,Object> map = new HashMap<String, Object>();
int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
map.put("_id", id);
map.put("name", name);
list.add(map);
}
return list;
}
}
方法二:
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;
public class SimpleCursorActivity extends Activity{
private ListView lv;
private SQLiteDatabase 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);
String path = Environment.getExternalStorageDirectory().
getAbsolutePath()+File.separator+"info.db";
/**
* openDatabase 用来打开数据库的操作
* 参数1:文件的路径
* 参数2:游标工厂
* 参数3:flag 标记 可读写操作
*
*/
db = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READWRITE);
Cursor c = db.rawQuery("select * from person", null);
/**
* 参数1:上下文对象
* 参数2:布局
* 参数3:数据
* 参数4:c 里的字段数组
* 参数5:对应的控件
* 参数6:标记
*/
@SuppressWarnings("deprecation")
SimpleCursorAdapter adapter = new SimpleCursorAdapter
(SimpleCursorActivity.this
, R.layout.item, c,
new String[]{"_id","name"},
new int[]{R.id.tv_id,R.id.tv_name});
//将数据填充到lv
lv.setAdapter(adapter);
}
}
方法三:
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;
public class CursorAdapterActivity extends Activity{
private ListView lv;
private SQLiteDatabase 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);
String path = Environment.getExternalStorageDirectory().
getAbsolutePath()+File.separator+"info.db";
/**
*
*/
db = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READWRITE);
Cursor c = db.rawQuery("select * from person", null);
MyCursorAdapter adapter = new MyCursorAdapter(CursorAdapterActivity.this,c);
lv.setAdapter(adapter);
}
/**
* 自定义的Adapter
*/
class MyCursorAdapter extends CursorAdapter{
public MyCursorAdapter(Context context, Cursor c) {
super(context, c);
// TODO Auto-generated constructor stub
}
/**
* newView 返回item布局 View 给 bindView
*/
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
// TODO Auto-generated method stub
return LayoutInflater.from(context).inflate(R.layout.item, null);
}
/**
* 参数1:newView 里返回的视图
* 参数2:上下文对象
* 参数3:Cursor对象
*/
@Override
public void bindView(View view, Context context, Cursor cursor) {
// TODO Auto-generated method stub
TextView tv = (TextView) view.findViewById(R.id.tv_id);
TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
tv.setText(cursor.getInt(cursor.getColumnIndex("_id"))+"");
tv_name.setText(cursor.getString(cursor.getColumnIndex("name")));
}
}
}