listview在android中显示数据库中的数据

时间:2013-08-13 06:06:26

标签: android android-listview android-sqlite

我是android新手。我想知道如何在listview中显示数据库中的数据。它没有向数据库添加数据。我只是显示我们存储在数据库中的任何内容。请帮助我实现这一点...提前感谢...

3 个答案:

答案 0 :(得分:12)

使用这些可能对您有帮助的课程

用于数据库创建

package com.example.grapes;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHandler extends SQLiteOpenHelper {

    // All Static variables
    // Database Version
    private static final int DATABASE_VERSION = 1;

    // Database Name
    private static final String DATABASE_NAME = "dataManager";

    // Contacts table name
    private static final String TABLE_DATAS = "datas";

    // Contacts Table Columns names
    private static final String KEY_ID = "id";
    private static final String KEY_ITEM = "item";
    private static final String KEY_COMMENT = "comment";
    private static final String KEY_DATE = "date";
    private static final String KEY_TIME = "time";

    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_DATAS_TABLE = "CREATE TABLE " + TABLE_DATAS + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_ITEM + " TEXT,"
                + KEY_COMMENT + " TEXT," + KEY_DATE + " TEXT," + KEY_TIME + " TEXT" + ")";
        db.execSQL(CREATE_DATAS_TABLE);
    }

    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_DATAS);

        // Create tables again
        onCreate(db);
    }

    /**
     * All CRUD(Create, Read, Update, Delete) Operations
     */

    // Adding new contact
    void addData(Datas data) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_ITEM, data.getItem()); // Contact Name
        values.put(KEY_COMMENT, data.getComment()); // Contact Phone
        values.put(KEY_DATE, data.getDate()); // Contact Name
        values.put(KEY_TIME, data.getTime()); // Contact Phone

        // Inserting Row
        db.insert(TABLE_DATAS, null, values);
        db.close(); // Closing database connection
    }

    // Getting single contact
    Datas getData(int id) {
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_DATAS, new String[] { KEY_ID,
                KEY_ITEM, KEY_COMMENT, KEY_DATE, KEY_TIME}, KEY_ID + "=?",
                new String[] { String.valueOf(id) }, null, null, null, null);
        if (cursor != null)
            cursor.moveToFirst();

        Datas data = new Datas(Integer.parseInt(cursor.getString(0)),
                cursor.getString(1), cursor.getString(2),cursor.getString(3), cursor.getString(4));
        // return contact
        return data;
    }

 Datas getItemOnly(int id) {
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_DATAS, new String[] { KEY_ID,
                KEY_ITEM, KEY_COMMENT, KEY_DATE, KEY_TIME}, KEY_ID + "=?",
                new String[] { String.valueOf(id) }, null, null, null, null);
        if (cursor != null)
            cursor.moveToFirst();

        Datas data = new Datas(Integer.parseInt(cursor.getString(0)),
                cursor.getString(1), cursor.getString(2),cursor.getString(3), cursor.getString(4));
        // return contact
        return data;
    }

    // Getting All Contacts
    public List<Datas> getAllDatas() {
        List<Datas> dataList = new ArrayList<Datas>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_DATAS;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Datas data = new Datas();
                data.setID(Integer.parseInt(cursor.getString(0)));
                data.setItem(cursor.getString(1));
                data.setComment(cursor.getString(2));
                data.setDate(cursor.getString(3));
                data.setTime(cursor.getString(4));
                // Adding contact to list
                dataList.add(data);
            } while (cursor.moveToNext());
        }

        // return contact list
        return dataList;
    }

    // Updating single contact
    public void updateDatas(int position, String value) {
        SQLiteDatabase db = this.getWritableDatabase();

        String update = "UPDATE datas SET comment = '"+ value +"' WHERE ID = " + position;
        db.execSQL(update);

    }

    // Deleting single contact
        public void deleteValues(int position) {
            SQLiteDatabase db = this.getWritableDatabase();
            position = position + 1;
            String id = String.valueOf(position);
            db.delete(TABLE_DATAS, KEY_ID + "="+id,null);
            //Updating table
            //Creating temporary table

            String CREATE_TABLE_COPY = "CREATE TABLE " + "COPIED_TABLE" + "("
                    + KEY_ID + " INTEGER PRIMARY KEY," + KEY_ITEM + " TEXT,"
                    + KEY_COMMENT + " TEXT," + KEY_DATE + " TEXT," + KEY_TIME + " TEXT" + ")";
            db.execSQL(CREATE_TABLE_COPY);
            // Copying necessary columns to new temporary table
            String db_insert_command;
            db_insert_command = "INSERT INTO COPIED_TABLE (" + KEY_ITEM +", " + KEY_COMMENT + ", " + KEY_DATE + ", " + KEY_TIME + ") SELECT " + KEY_ITEM +", " + KEY_COMMENT + ", " + KEY_DATE + ", " + KEY_TIME + " FROM "+ TABLE_DATAS;
            System.out.println(db_insert_command);
            db.execSQL(db_insert_command);
            //Dropping old table
            db.execSQL("DROP TABLE " + TABLE_DATAS);
            //Creating old table again
            String CREATE_TABLE = "CREATE TABLE " + TABLE_DATAS + "("
                    + KEY_ID + " INTEGER PRIMARY KEY," + KEY_ITEM + " TEXT,"
                    + KEY_COMMENT + " TEXT," + KEY_DATE + " TEXT," + KEY_TIME + " TEXT"  + ")";
            db.execSQL(CREATE_TABLE);
            //Copying all fields from temporary table to newly created old table
            db.execSQL("INSERT INTO " + TABLE_DATAS + " SELECT * FROM COPIED_TABLE");
            //Dropping temporary table
            db.execSQL("DROP TABLE COPIED_TABLE");
            db.close();
        }


    // Getting contacts Count
    public int getDatasCount() {
        String countQuery = "SELECT  * FROM " + TABLE_DATAS;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        //cursor.close();

        // return count
        return cursor.getCount();
    }

}

用于数据管理使用此类

package com.example.grapes;

public class Datas {

    //private variables
    int _id;
    String _item;
    String _comment;
    String _date;
    String _time;

    // Empty constructor
    public Datas(){

    }
    // constructor
    public Datas(int id, String item, String comment, String date, String time){
        this._id = id;
        this._item = item;
        this._comment = comment;
        this._date = date;
        this._time = time;
    }

    // constructor
    public Datas(String item, String comment, String date, String time){
        this._item = item;
        this._comment = comment;
        this._date = date;
        this._time = time;
    }
    // getting ID
    public int getID(){
        return this._id;
    }

    // setting id
    public void setID(int id){
        this._id = id;
    }

    // getting name
    public String getItem(){
        return this._item;
    }

    // setting name
    public void setItem(String item){
        this._item = item;
    }

    // getting phone number
    public String getComment(){
        return this._comment;
    }

    // setting phone number
    public void setComment(String comment){
        this._comment = comment;
    }

    // getting phone number
    public String getDate(){
        return this._date;
    }

    // setting phone number
    public void setDate(String date){
        this._date = date;
    }

    // getting phone number
    public String getTime(){
        return this._time;
    }

    // setting phone number
    public void setTime(String time){
        this._time = time;
    }
}
列表视图的

使用此

package com.example.grapes;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class ListviewActivity extends ListActivity {

    AlertDialog.Builder alert;
    EditText input;
    private static final int TEXT_ID = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);


        input = new EditText(this);
        alert = new AlertDialog.Builder(this);

        final DatabaseHandler db = new DatabaseHandler(this);

        System.out.println("Entered ListViewActivity");

        ArrayList<HashMap<String, String>> Items = new ArrayList<HashMap<String, String>>();

        System.out.println("Arraylist hashmap declared");

        // Reading all values
        Log.d("Reading: ", "Reading all contacts..");
        List<Datas> data = db.getAllDatas();       

        for (Datas val : data) {

                // Writing values to map
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("comment",val.getComment());
            map.put("date", val.getDate());
            map.put("time", val.getTime());
            map.put("item", val.getItem());


            Items.add(map);        
        }

     // Adding Items to ListView
        ListAdapter adapter = new SimpleAdapter(this, Items,
                R.layout.list_item,new String[] { "date", "time", "comment", "item" },
                new int[] {R.id.date, R.id.time, R.id.capacity, R.id.price });

            setListAdapter(adapter);

            // selecting single ListView item
             ListView lv = getListView();
            lv.setLongClickable(true);

            lv.setOnItemLongClickListener(new OnItemLongClickListener() {

                public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                        final int pos, long id) {
                    // TODO Auto-generated method stub

//                    Log.v("long clicked","pos"+" "+pos);
                    alert.setTitle("Confirm Delete");
                    // set dialog message
                    alert
                        .setMessage("Do you want to DELETE this entry?")
                        .setCancelable(false)
                        .setPositiveButton("Do it!",new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                // if this button is clicked, close
                                // current activity
                                db.deleteValues(pos);
                                Intent i = new Intent(getApplicationContext(), ListviewActivity.class);
                                startActivity(i);

                            }
                          })
                        .setNegativeButton("I need this",new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                // if this button is clicked, just close
                                // the dialog box and do nothing
                                dialog.cancel();
                            }
                        });

                        // create alert dialog
                        AlertDialog alertDialog = alert.create();

                        // show it
                        alertDialog.show();

                    return true;
                }
            });

            lv.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        final int pos, long id) {
                    // TODO Auto-generated method stub

                    input.setId(TEXT_ID);

                    alert.setView(input);

//                    Log.v("long clicked","pos"+" "+pos);
                    alert.setTitle("Edit the Comment?");

                     String dat = ((TextView) arg1.findViewById(R.id.date)).getText().toString();
                     String tim = ((TextView) arg1.findViewById(R.id.time)).getText().toString();
                     String itm = ((TextView) arg1.findViewById(R.id.price)).getText().toString();

                    // set dialog message
                    alert
                        .setMessage("Edit Comment of " + itm + " on " + dat + " " + tim + " ?")
                        .setCancelable(false)
                        .setPositiveButton("Do it!",new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                // if this button is clicked, close
                                // current activity

                                String value = input.getText().toString();
                                Log.d("User name: ",value);
                                //return;
                               // db.execSQL(TABLE_DATAS, KEY_COMMENT, KEY_ID + " = " + string, null);
                                db.updateDatas(pos+1, value);
                                Intent j = new Intent(getApplicationContext(), ListviewActivity.class);
                                startActivity(j);

                            }
                          })
                        .setNegativeButton("I need this",new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                // if this button is clicked, just close
                                // the dialog box and do nothing
                                dialog.cancel();
                            }
                        });

                        // create alert dialog
                        AlertDialog alertDialog = alert.create();

                        // show it
                        alertDialog.show();

                }
                });
            }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.home:
                ListviewActivity.this.finish();
                return true;
            case R.id.about:
                 Toast.makeText(getApplicationContext(), "This is collection and is created by amdel corporation",
                         Toast.LENGTH_LONG).show();
                return true;
            case R.id.exit:
                finish();
                System.exit(0);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

用于插入操作使用此

 db.addData(new Datas(item, comment, date, time));

阅读所有项目

for (Datas d : datas) {
    String log = "Id: "+d.getID()+" ,Item: " + d.getItem() + " ,Comment: " + d.getComment() + " ,Date: " + d.getDate() + ",Comment: " + d.getTime();
               // Writing Contacts to log
    Log.d("Item: ", log);
}

从列表视图中删除

                public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                        final int pos, long id) {
                    // TODO Auto-generated method stub

//                    Log.v("long clicked","pos"+" "+pos);
                    alert.setTitle("Confirm Delete");
                    // set dialog message
                    alert
                        .setMessage("Do you want to DELETE this entry?")
                        .setCancelable(false)
                        .setPositiveButton("Do it!",new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                // if this button is clicked, close
                                // current activity
                                db.deleteValues(pos);
                                Intent i = new Intent(getApplicationContext(), ListviewActivity.class);
                                startActivity(i);

                            }
                          })
                        .setNegativeButton("I need this",new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                // if this button is clicked, just close
                                // the dialog box and do nothing
                                dialog.cancel();
                            }
                        });

                        // create alert dialog
                        AlertDialog alertDialog = alert.create();

                        // show it
                        alertDialog.show();

                    return true;
                }

答案 1 :(得分:1)

您可以在此处找到完美的数据库示例here

(或)

在你的班级尝试这个,它会确定的。但是你需要查看链接

filteredCouponsList = new ArrayList<CouponsResponse>();
    ViewCouponsDataBase db1 = new ViewCouponsDataBase(context);
    filteredCouponsList = db1.getByDuration(which);
    setAdapter();

要从数据库中检索数据,请尝试使用此代码

public ArrayList<CouponsResponse> getByDuration(int msgbyduration) {

    ArrayList<CouponsResponse> byDuration = new ArrayList<CouponsResponse>();
    String selectQuery = null;
    if (msgbyduration == 0) {
        selectQuery = "SELECT  * FROM " + COUPONS_TABLE + " WHERE "
                + VALIDTILL + " <=  DATE('now','1 day') " + " AND "
                + VALIDTILL + " >=  DATE('now') " + " order by "
                + VALIDTILL;
    }
    if (msgbyduration == 1) {
        selectQuery = "SELECT  * FROM " + COUPONS_TABLE + " WHERE "
                + VALIDTILL + " <=  DATE('now','7 day') " + " AND "
                + VALIDTILL + " >=  DATE('now') " + " order by "
                + VALIDTILL;
    }
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {
            CouponsResponse rec = new CouponsResponse();
            rec.setId(cursor.getInt(0));
            rec.setMerchantName(cursor.getString(1));
            rec.setIssuedBranchAddress(cursor.getString(2));
            rec.setBranchEmail(cursor.getString(3));
            rec.setBranchContactno(cursor.getString(4));
            rec.setBranchWebsite(cursor.getString(5));
            rec.setCouponIssuedOn(cursor.getString(6));
            rec.setValidFrom(cursor.getString(7));
            byDuration.add(rec);
        } while (cursor.moveToNext());
    }
    db.close();

    return byDuration;
}

答案 2 :(得分:0)

您可以像下面这样使用CursorAdapter:

public class MyCursorAdapter extends CursorAdapter {

    private LayoutInflater mInflater;

    public MyCursorAdapter(Context context, Cursor c, boolean autoRequery) {
        super(context, c, autoRequery);
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public void bindView(View convertView, Context context, Cursor cursor) {
        ViewHolder holder = (ViewHolder) convertView.getTag();
        holder.text.setText(cursor.getString(0));
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        View item = mInflater.inflate(R.layout.listitem, parent, false);
        ViewHolder holder = new ViewHolder();
        holder.text = (TextView) item.findViewById(R.id.text);
        item.setTag(holder);
        return item;
    }

    private static class ViewHolder {
        TextView text;
    }

}