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

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

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

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

将数据库放到外部存储storage/Download文件下

结果如图:

第一种:SimpleAdapter

逻辑代码文件:

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 androids.app.Activity;import androids.database.Cursor;import androids.database.sqlite.SQLiteDatabase;import androids.os.Bundle;import androids.os.Environment;import androids.widget.ListView;import androids.widget.SimpleAdapter;public class MainActivity extends Activity {ListView lv;List list;SQLiteDatabase db; String path = Environment.getExternalStorageDirectory(). getAbsolutePath()+File.separator+"Download"+File.separator+"test.db";@Overrideprotected 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 getData() {list = new ArrayList();String sql = "select * from person";Cursor cursor = db.rawQuery(sql, null);while (cursor.moveToNext()) {Map map = new HashMap();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;}} 第二种SimpleCursorAdapter:

逻辑代码文件:

package com.SimpleCursorAdapter;import java.io.File;import androids.app.Activity;import androids.database.Cursor;import androids.database.sqlite.SQLiteDatabase;import androids.os.Bundle;import androids.os.Environment;import androids.support.v4.widget.SimpleCursorAdapter;import androids.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";@Overrideprotected 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);}}

第三种自定义适配器CursorAdapter:

package com.zidiyiAdapter;import java.io.File;import androids.app.Activity;import androids.content.Context;import androids.database.Cursor;import androids.database.sqlite.SQLiteDatabase;import androids.os.Bundle;import androids.os.Environment;import androids.support.v4.widget.CursorAdapter;import androids.view.LayoutInflater;import androids.view.View;import androids.view.ViewGroup;import androids.widget.ListView;import androids.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";@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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@Overridepublic View newView(Context context, Cursor c, ViewGroup parent) {return LayoutInflater.from(context).inflate(R.layout.style,null);}// 参数1:newVIew 里返回的View视图@Overridepublic 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")));}}} 三种共用的主布局文件:

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

网站地图