您的位置:首页 > 数据库

andriod之从Sqlite中获取数据的三种方法SimpleAdapter,SimpCursorAdapter,CursorAdapter

2015-09-18 08:43 351 查看

方法一:

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<
4000
br />
        }

        /**

         * 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")));

            

        }

        

    }

    

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息