数据显示,从数据库中的ListView的Andr​​oid [英] show data from database to listView Android

查看:124
本文介绍了数据显示,从数据库中的ListView的Andr​​oid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从我的数据库我所有的数据显示,到列表视图

I am trying to show all my data from my database into the listview

code创建数据库:

Code to create database:

DataHander.java

DataHander.java

package com.example.testingforstack;

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

public class DataHandler {
    public static final String NAME = "name";
    public static final String EMAIL = "email";
    public static final String TABLE_NAME = "mytable";
    public static final String DATA_BASE_NAME = "mydatabase";
    public static final int DATABASE_VERSION = 1;
    public static final String TABLE_CREATE = "create table mytable (name text not null, email text not null);";

    DataBaseHelper dbhelper;
    Context ctx;
    SQLiteDatabase db;

    public DataHandler(Context ctx){
        this.ctx = ctx;
        dbhelper = new DataBaseHelper(ctx);
    }

    public static class DataBaseHelper extends SQLiteOpenHelper{

        public DataBaseHelper(Context ctx) {
            super(ctx, DATA_BASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db){
            try{
                db.execSQL(TABLE_CREATE);
            }catch (SQLException e){
                e.printStackTrace();
            }
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
            //db.execSQL("DROP TABLE IF EXISTS mytable");
            onCreate(db);
        }
    }

    public DataHandler open(){
        db = dbhelper.getReadableDatabase();
        return this;
    }

    public void close(){
        dbhelper.close();
    }

    public long insertData(String name, String email){
        ContentValues content = new ContentValues();
        content.put(NAME, name);
        content.put(EMAIL, email);
        return db.insertOrThrow(TABLE_NAME, null, content);
    }

    public Cursor returnData(){
        return db.query(TABLE_NAME, new String[] {NAME, EMAIL}, null, null, null, null, null); 
    }

}

mainActivity.java

mainActivity.java

package com.example.testingforstack;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    Button save, load;
    EditText name, email;
    DataHandler handler;
    String getName, getEmail;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        save = (Button) findViewById(R.id.save);
        load = (Button) findViewById(R.id.load);
        name = (EditText) findViewById(R.id.name);
        email = (EditText) findViewById(R.id.email);

        save.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String getName = name.getText().toString();
                String getEmail = email.getText().toString();

                handler = new DataHandler(getBaseContext());
                handler.open();
                long id = handler.insertData(getName, getEmail);
                insertSuccess();
                //Toast.makeText(getBaseContext(), "Data inserted", Toast.LENGTH_LONG).show();
                handler.close();
            }
        });

        load.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                getName = "";
                getEmail = "";
                handler = new DataHandler(getBaseContext());
                handler.open();
                Cursor C = handler.returnData();
                if(C.moveToFirst()){
                    do{
                        getName = C.getString(0);
                        getEmail = C.getString(1);
                    }while(C.moveToNext());
                }
                handler.close();
                loadSuccess();
                //Toast.makeText(getBaseContext(), "Name: "+getName+", Email: "+getEmail, Toast.LENGTH_LONG).show();
            }
        });
    }

    public void insertSuccess()
    {
        AlertDialog.Builder insertData = new AlertDialog.Builder(this);

        insertData.setTitle("Info");
        insertData.setMessage("Data Inserted");
        insertData.setNegativeButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int value) {
                // TODO Auto-generated method stub
                arg0.dismiss();
            }
        });
        insertData.show();
    }

    public void loadSuccess()
    {
        AlertDialog.Builder loadData = new AlertDialog.Builder(this);

        loadData.setTitle("Info");
        loadData.setMessage("Name: "+getName+" & your email: "+getEmail);
        loadData.setNegativeButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int value) {
                // TODO Auto-generated method stub
                arg0.dismiss();
            }
        });
        loadData.show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

我有两个按钮保存负荷。我已经成功地实现了保存按钮来保存用户名和电子邮件。不过,我真的不知道将数据加载到列表视图。那怎么办?

I have two button save and load. I have successfully implemented the save button to save the user name and email. However, I don't really know to load the data into the listview. How to do that?

推荐答案

在列表视图中可以使用不同类型的适配器。对于数据库是最适合使用的CursorAdapter,你知道哪个光标来使用。您也可以manualy走在直通DB元素,并将它们保存在阵列其他对象,那么你可以有arryAddapter在其中传递您的对象数组。在每一种情况下,你必须设置的粘合剂或onCreateView您告诉whih paremeter走在FILD超越控制的方法。

In listview you can use different types of adapters. For database is most appropriate to use cursorAdapter where you tell which cursor to use. You can also manualy walk thru elements in DB and save them in some other object in array and then you can have arryAddapter in which you pass your array of object. In each case you must set binder or overide method onCreateView where you tell whih paremeter go in which fild.

您可以看看这个的http://更多信息www.mysample code.com / 2012/07 / Android的列表视图-的CursorAdapter-sqlite.html 的例子。

You can look this http://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html example for more informations.

这篇关于数据显示,从数据库中的ListView的Andr​​oid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆