如何在列表视图显示从我的数据库中的数据? [英] How do i display data from my database in a listview?

查看:302
本文介绍了如何在列表视图显示从我的数据库中的数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

喜我在我的数据库中的某些三个表。我希望能够从在ListView数据库显示姓名。


  1. 首先我打开数据库,并添加一个客户的名字,姓氏和号码。然后我关闭数据库。

  2. 从这里,我感到困惑,并以我怎么能在同一行显示姓名,但在ListView留下的数量。

这是我叫DBAdapter数据库类和clientsActivity类在这里我希望能够显示在我加入它的客户端。

我知道它有点简单,但我做的。没有线索,并在下面的一些教程结束后,我显示一个toastview方式中的数据这不是我想要的。

好心帮....

我的数据库类。(DBAdapter)

 包com.android.ideos;
进口android.content.ContentValues​​;
进口android.content.Context;
进口android.database.Cursor;
进口android.database.SQLException;
进口android.database.sqlite.SQLiteDatabase;
进口android.database.sqlite.SQLiteOpenHelper;
进口android.util.Log;/ **
 * @author摹山姆 *
 * /公共类DBAdapter {
    在所有3个表//定义列(字段)
    公共静态最后弦乐KEY_CLIENTID =_id;
    公共静态最后弦乐KEY_TRANSID =TRANSID;
    公共静态最后弦乐KEY_NAME =名;
    公共静态最后弦乐KEY_SURNAME =姓;
    公共静态最后弦乐KEY_MOBILE =移动;
    公共静态最后弦乐为key_type =类型;
    公共静态最后弦乐KEY_DATETIME =日期时间;
    公共静态最后弦乐KEY_AMOUNT =金额;
    公共静态最后弦乐KEY_BALANCE =平​​衡;    私有静态最后弦乐TAG =DBAdapter;    私有静态最后弦乐DATABASE_NAME =radicalfinance;
    私有静态最后弦乐DATABASE_CLIENTSTable =clientstable;
    私有静态最后弦乐DATABASE_TRANSACTIONS =TransactionsTable;
    私有静态最后弦乐DATABASE_CLIENTSBALANCE =ClientsBalanceTable;
    私有静态最终诠释DATABASE_VERSION = 1;
 //创建数据库radicalfinance
    // CREATING CLIENTSTable
    私有静态最后弦乐DATABASE_CREATE_CLIENTSTABLE =
        CREATE TABLE clientstable(_id整数主键自动增量
        +名称的文本不为空,姓文不为空,
        +移动整数NOT NULL);;
 // CREATING TransactionsTable
    私有静态最后弦乐DATABASE_CREATE_TRANSACTIONSTABLE =
        CREATE TABLE TransactionsTable(_id整数主键自动增量
        +TRANSID整数
        +boolean类型不为null,日期时间文本不为空,
        +长量不是null);;
 // CREATING ClientsBalanceTable
    私有静态最后弦乐DATABASE_CREATE_CLIENTSBALANCETABLE =
        CREATE TABLE ClientsBalanceTable(_id整数主键自动增量
        +平衡长期不为null);;
    私人最终上下文的背景下;
    私人DatabaseHelper DBHelper;
    私人SQLiteDatabase分贝;
    公共DBAdapter(上下文CTX)
    {
        this.context = CTX;
        DBHelper =新DatabaseHelper(背景);
    }    公共类DatabaseHelper扩展SQLiteOpenHelper
    {
        DatabaseHelper(上下文的背景下)
        {
            超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
        }        @覆盖
        公共无效的onCreate(SQLiteDatabase DB)
        {
            db.execSQL(DATABASE_CREATE_CLIENTSTABLE);
            db.execSQL(DATABASE_CREATE_TRANSACTIONSTABLE);
            db.execSQL(DATABASE_CREATE_CLIENTSBALANCETABLE);
        }        @覆盖
        公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,
                              INT静态网页)
        {
            Log.w(TAG,从版本升级数据库+ oldVersion
                  +至
                  + NEWVERSION +,这将摧毁所有旧数据);
            db.execSQL(DROP TABLE IF EXISTS clientstable);
            的onCreate(DB);
        }
    }    //方法打开和关闭数据库,以及用于在该表中添加/编辑/删除的行的方法。   // ---打开数据库---
    公共DBAdapter的open()抛出的SQLException
    {
        DB = DBHelper.getWritableDatabase();
        返回此;    }    // ---关闭数据库---
    公共无效的close()
    {
        DBHelper.close();
    }    // ---插入一个客户和他的信息到数据库---    众长insertClient(字符串名称,姓字符串,字符串移动)
    {
        ContentValues​​ initialValues​​ =新ContentValues​​();
        initialValues​​.put(KEY_NAME,名);
        initialValues​​.put(KEY_SURNAME,姓);
        initialValues​​.put(KEY_MOBILE,手机);
        返回db.insert(DATABASE_CLIENTSTable,空,initialValues​​);
    }
    众长insertClientTransaction(TRANSID字符串,字符串类型,日期时间字符串,字符串金额)
    {
        ContentValues​​ initialValues​​ =新ContentValues​​();
        initialValues​​.put(KEY_TRANSID,TRANSID);
        initialValues​​.put(key_type的,类型);
        initialValues​​.put(KEY_DATETIME,日期);
        initialValues​​.put(KEY_AMOUNT,金额);
        返回db.insert(DATABASE_TRANSACTIONS,空,initialValues​​);
    }
    众长insertClientBalance(字符串平衡)
    {
        ContentValues​​ initialValues​​ =新ContentValues​​();
        initialValues​​.put(KEY_BALANCE,平衡);
        返回db.insert(DATABASE_CLIENTSBALANCE,空,initialValues​​);
    }    // ---删除一个特定的客户端---
    公共布尔deleteClient(长的clientId)
    {
        返回db.delete(DATABASE_CLIENTSTable,KEY_CLIENTID +=+客户端ID,NULL)> 0;
    }    // ---检索所有的客户---
    公共光标getAllClients()
    {
        返回db.query(DATABASE_CLIENTSTable,新的String [] {
                KEY_CLIENTID,
                KEY_NAME,
                KEY_SURNAME,
                KEY_MOBILE},
                空值,
                空值,
                空值,
                空值,
                空值);    }
    //查询TransactionsTable
    公共光标getAllTransactionsRecords(){        返回db.query(DATABASE_TRANSACTIONS,新的String [] {
                KEY_TRANSID,
                key_type的,
                KEY_DATETIME,
                KEY_AMOUNT},
                空值,
                空值,
                空值,
                空值,
                空值);
    }
    //提出的意见将采取的即的clientsbalanceRecords护理
        //查询clientsbalancetable
    //公共光标getAllBalanceRecords(){        //返回db.query(DATABASE_CLIENTSBALANCE,新的String [] {
                // KEY_BALANCE},
                //空值,
                //空值);
    //}    // ---检索特定的客户端---
    公共光标getClient(长的clientId)抛出的SQLException
    {
        光标mCursor =
                db.query(真,DATABASE_CLIENTSTable,新的String [] {
                        KEY_CLIENTID,
                        KEY_NAME,
                        KEY_SURNAME,
                        KEY_MOBILE
                        },
                        KEY_CLIENTID +=+客户端ID,
                        空值,
                        空值,
                        空值,
                        空值,
                        空值);
        如果(mCursor!= NULL){
            mCursor.moveToFirst();
        }
        返回mCursor;
    }    // ---更新客户端的细节---
    公共布尔updateClient(长客户端ID,字符串名称,
    姓字符串,字符串移动)
    {
        ContentValues​​ ARGS =新ContentValues​​();
        args.put(KEY_NAME,名);
        args.put(KEY_SURNAME,姓);
        args.put(KEY_MOBILE,手机);
        返回db.update(DATABASE_CLIENTSTable,ARGS,
                        KEY_CLIENTID +=+客户端ID,NULL)> 0;
    }
    公共布尔updateTransactions(长客户端ID,长期TRANSID,字符串类型,
            字符串日期时间,长期金额)
            {
                ContentValues​​ ARGS =新ContentValues​​();
                args.put(KEY_TRANSID,TRANSID);
                args.put(key_type的,类型);
                args.put(KEY_DATETIME,日期);
                args.put(KEY_AMOUNT,金额);
                返回db.update(DATABASE_TRANSACTIONS,ARGS,
                                KEY_CLIENTID +=+客户端ID,NULL)> 0;
            }    公共SQLiteDatabase getWritableDatabase(){
        // TODO自动生成方法存根
        返回null;
    }
}

那么,这里是我ClientsActivity类

 包com.android.ideos;
进口android.app.ListActivity;
进口android.database.Cursor;
进口android.os.Bundle;
进口android.view.Menu;
进口android.view.MenuInflater;
进口android.view.MenuItem;
进口android.widget.CursorAdapter;
进口android.widget.ListAdapter;
进口android.widget.Toast;
公共类ClientsActivity扩展ListActivity {
    保护DBAdapter分贝;
    保护的CursorAdapter数据源;
    保护ListAdapter适配器;
    //私有静态最后弦乐列[] = {名,姓};
    //私有静态最后弦乐塔格=ClientsActivity;    / **当第一次创建活动调用。 * /
    @覆盖
    公共无效的onCreate(捆绑savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        DB =新DBAdapter(本);
       / * DataBaseHelper帮手=新DataBaseHelper(本);
        DB = helper.getWritableDatabase();
        cursor数据= db.query(clientstable栏目,
                 NULL,NULL,NULL,NULL,NULL);
        数据源=新SimpleCursorAdapter(这一点,
                 R.layout.clients,数据,列,
                 新的INT [] {R.id.name,R.id.surname});        setListAdapter(数据源); * /
        db.open();
        龙ROWID = db.insertClient(Adera,丹,0727858191);
        db.close();        displayclients(ROWID);     }    私人无效displayclients(长的clientId)
    ** {
        // TODO自动生成方法存根
        db.open();
        光标结果= db.getClient(的clientId);
        如果(results.moveToFirst())
        {
            Toast.makeText(这一点,名称:+ results.getString(1)++ results.getString(2),Toast.LENGTH_LONG).show();
        } **}//调用内容菜单布局
 @覆盖
 公共布尔onCreateOptionsMenu(菜单菜单){
  MenuInflater myMenuInflater = getMenuInflater();
  myMenuInflater.inflate(R.menu.menu,菜单);
     返回true;
 } //菜单的布局中所见的menu.xml文件文件
 @覆盖
 公共布尔onOptionsItemSelected(菜单项项){
  // TODO自动生成方法存根
  开关(item.getItemId())
  {
  //菜单按钮的新客户端和功能code将在这里实现。
   案例(R.id.menu_new_client):
    Toast.makeText(这一点,新客户,Toast.LENGTH_LONG).show();
    打破;    //菜单按钮:编辑,功能code将在这里实现。
   案例(R.id.menu_edit):
    Toast.makeText(这一点,编辑,Toast.LENGTH_LONG).show();
    打破;    //菜单按钮:删除和功能code将在这里实现。
   案例(R.id.menu_delete):
    Toast.makeText(这一点,删除,Toast.LENGTH_LONG).show();
    打破;    //菜单按钮:搜索,功能code将在这里实现。
   案例(R.id.menu_search):
       Toast.makeText(这一点,搜索,Toast.LENGTH_LONG).show();
       打破;
  }
  返回true;
 }
}


解决方案

我看不到任何地方,你是通过ListAdapter(CursorAdapter的)分配数据库光标到ListView。

我认为你需要做的谷歌记事本教程做的所有3,但哪怕只是Notepad1教程介绍了有关SimpleCursorAdapter链接到ListView。看看这个教程并特别注意的fillData()方法

 私人无效fillData(){
    //获取所有的音符从数据库中,并创建项目列表
    光标C = mDbHelper.fetchAllNotes();
    startManagingCursor(C);    的String [] =由新的String [] {} NotesDbAdapter.KEY_TITLE;
    INT []为= INT新[] {} R.id.text1;    //现在创建一个阵列适配器,并设置它使用我们一行中显示
    SimpleCursorAdapter指出=
        新SimpleCursorAdapter(这一点,R.layout.notes_row,C,从,到);
    setListAdapter(注);
}

我希望帮助

Hi i got some three tables in my database. i want to be able to display the name and surname from the database in a listview.

  1. first i open the database and add a client's name, surname and number. Then i close the database.
  2. from here, i get confused and as to how i can display the name and surname in one line but in a listview leaving behind the number.

here is my database class called DBAdapter and the clientsActivity class where i want to be able to display the client i added in it.

i know its a bit simple but am done. No clue and in the end after following a number of tutorials, i display the data in a toastview manner which is not what i want.

kindly help....

my database class.(DBAdapter)

package com.android.ideos;
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;
import android.util.Log;

/**
 * @author G Sam

 *
 */



public class DBAdapter {
    //defining columns(fields) in all 3 tables
    public static final String KEY_CLIENTID = "_id";
    public static final String KEY_TRANSID = "transId";
    public static final String KEY_NAME = "name";
    public static final String KEY_SURNAME = "surname";
    public static final String KEY_MOBILE= "mobile"; 
    public static final String KEY_TYPE = "Type";
    public static final String KEY_DATETIME = "DateTime";
    public static final String KEY_AMOUNT = "Amount";
    public static final String KEY_BALANCE = "Balance";

    private static final String TAG = "DBAdapter";

    private static final String DATABASE_NAME = "radicalfinance";
    private static final String DATABASE_CLIENTSTable = "clientstable";
    private static final String DATABASE_TRANSACTIONS = "TransactionsTable";
    private static final String DATABASE_CLIENTSBALANCE = "ClientsBalanceTable";
    private static final int DATABASE_VERSION = 1;
 //Creating the database radicalfinance
    //CREATING CLIENTSTable
    private static final String DATABASE_CREATE_CLIENTSTABLE =
        "create table clientstable (_id integer primary key autoincrement, "
        + "name text not null, surname text not null, " 
        + "mobile integer not null);";
 //CREATING TransactionsTable    
    private static final String DATABASE_CREATE_TRANSACTIONSTABLE =
        "create table TransactionsTable (_id integer primary key autoincrement, "
        + "transId integer,"
        + "Type boolean not null, DateTime text not null, " 
        + "Amount long not null);";
 //CREATING ClientsBalanceTable
    private static final String DATABASE_CREATE_CLIENTSBALANCETABLE =
        "create table ClientsBalanceTable (_id integer primary key autoincrement, "
        + "Balance long not null); "; 


    private final Context context;  
    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;


    public DBAdapter(Context ctx) 
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }

    public class DatabaseHelper extends SQLiteOpenHelper 
    {
        DatabaseHelper(Context context) 
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) 
        {
            db.execSQL(DATABASE_CREATE_CLIENTSTABLE);
            db.execSQL(DATABASE_CREATE_TRANSACTIONSTABLE);
            db.execSQL(DATABASE_CREATE_CLIENTSBALANCETABLE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, 
                              int newVersion) 
        {
            Log.w(TAG, "Upgrading database from version " + oldVersion 
                  + " to "
                  + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS clientstable");
            onCreate(db);
        }
    }    

    //methods for opening and closing the database, as well as the methods for adding/editing/deleting rows in the table.



   //---opens the database---
    public DBAdapter open() throws SQLException 
    {
        db = DBHelper.getWritableDatabase();
        return this;

    }

    //---closes the database---    
    public void close() 
    {
        DBHelper.close();
    }

    //---insert a client and his info into the database---

    public long insertClient(String name, String surname, String mobile) 
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_NAME, name);
        initialValues.put(KEY_SURNAME, surname);
        initialValues.put(KEY_MOBILE, mobile);
        return db.insert(DATABASE_CLIENTSTable, null, initialValues);
    }
    public long insertClientTransaction(String transId, String Type, String DateTime, String Amount) 
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_TRANSID, transId);
        initialValues.put(KEY_TYPE, Type);
        initialValues.put(KEY_DATETIME, DateTime);
        initialValues.put(KEY_AMOUNT, Amount);
        return db.insert(DATABASE_TRANSACTIONS, null, initialValues);
    }
    public long insertClientBalance(String Balance) 
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_BALANCE, Balance);
        return db.insert(DATABASE_CLIENTSBALANCE, null, initialValues);
    }

    //---deletes a particular client---
    public boolean deleteClient(long clientId) 
    {
        return db.delete(DATABASE_CLIENTSTable,KEY_CLIENTID + "=" + clientId, null) > 0;
    }

    //---retrieves all the clients---
    public Cursor getAllClients() 
    {
        return db.query(DATABASE_CLIENTSTable, new String[] {
                KEY_CLIENTID, 
                KEY_NAME,
                KEY_SURNAME,
                KEY_MOBILE}, 
                null, 
                null, 
                null, 
                null, 
                null);

    }
    //querying TransactionsTable
    public Cursor getAllTransactionsRecords() {

        return db.query(DATABASE_TRANSACTIONS, new String[] {
                KEY_TRANSID, 
                KEY_TYPE,
                KEY_DATETIME,
                KEY_AMOUNT}, 
                null, 
                null, 
                null, 
                null, 
                null);
    }
    //made comments will be taken care of i.e the clientsbalanceRecords
        //querying clientsbalancetable
    //public Cursor getAllBalanceRecords() {

        //return db.query(DATABASE_CLIENTSBALANCE, new String[] {
                //KEY_BALANCE}, 
                //null, 
                //null);
    //}

    //---retrieves a particular client---
    public Cursor getClient(long clientId) throws SQLException 
    {
        Cursor mCursor =
                db.query(true, DATABASE_CLIENTSTable, new String[] {
                        KEY_CLIENTID,
                        KEY_NAME, 
                        KEY_SURNAME,
                        KEY_MOBILE
                        }, 
                        KEY_CLIENTID + "=" + clientId, 
                        null,
                        null, 
                        null, 
                        null, 
                        null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

    //---updates a client's details---
    public boolean updateClient(long clientId, String name, 
    String surname, String mobile) 
    {
        ContentValues args = new ContentValues();
        args.put(KEY_NAME, name);
        args.put(KEY_SURNAME, surname);
        args.put(KEY_MOBILE, mobile);
        return db.update(DATABASE_CLIENTSTable, args, 
                        KEY_CLIENTID + "=" + clientId, null) > 0;
    }
    public boolean updateTransactions(long clientId, long transId, String Type, 
            String DateTime, long Amount) 
            {
                ContentValues args = new ContentValues();
                args.put(KEY_TRANSID, transId);
                args.put(KEY_TYPE, Type);
                args.put(KEY_DATETIME, DateTime);
                args.put (KEY_AMOUNT, Amount);
                return db.update(DATABASE_TRANSACTIONS, args, 
                                KEY_CLIENTID + "=" + clientId, null) > 0;
            }

    public SQLiteDatabase getWritableDatabase() {
        // TODO Auto-generated method stub
        return null;
    }
}

then here is my ClientsActivity class

package com.android.ideos;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.CursorAdapter;
import android.widget.ListAdapter;
import android.widget.Toast;
public class ClientsActivity extends ListActivity {


    protected DBAdapter db;
    protected CursorAdapter dataSource;
    protected ListAdapter adapter;
    //private static final String columns[] = { "name", "surname"};
    //private static final String TAGG = "ClientsActivity";



    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        db = new DBAdapter(this);
       /*DataBaseHelper helper = new DataBaseHelper(this);
        db = helper.getWritableDatabase();
        Cursor data = db.query("clientstable", columns,
                 null, null, null, null, null);
        dataSource = new SimpleCursorAdapter(this,
                 R.layout.clients, data, columns,
                 new int[] { R.id.name, R.id.surname });

        setListAdapter(dataSource);*/
        db.open();
        Long rowID = db.insertClient("Adera", "Dan", "0727858191");
        db.close();

        displayclients(rowID);

     }

    private void displayclients(long clientId) 
    **{
        // TODO Auto-generated method stub
        db.open();
        Cursor results = db.getClient(clientId);
        if (results.moveToFirst())
        {
            Toast.makeText(this, "Name: "+results.getString(1)+"  "+results.getString(2), Toast.LENGTH_LONG).show();
        }**





}

//calls the content menu layout
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater myMenuInflater = getMenuInflater();
  myMenuInflater.inflate(R.menu.menu, menu);
     return true;
 }

 // the layout of the menu as seen in the menu.xml file
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // TODO Auto-generated method stub
  switch(item.getItemId())
  {
  // the menu button New Client and the functionality code will be implemented here.
   case(R.id.menu_new_client):
    Toast.makeText(this, "New client", Toast.LENGTH_LONG).show();


    break;

    // the menu button: Edit, and the functionality code will be implemented here.
   case(R.id.menu_edit):
    Toast.makeText(this, "Edit", Toast.LENGTH_LONG).show();
    break; 

    // the menu button: DElete, and the functionality code will be implemented here.
   case(R.id.menu_delete):
    Toast.makeText(this, "Delete", Toast.LENGTH_LONG).show();


    break;

    // the menu button: Search, and the functionality code will be implemented here.
   case(R.id.menu_search):
       Toast.makeText(this, "Search", Toast.LENGTH_LONG).show();
       break;
  } 
  return true;
 }
}

解决方案

I can't see anywhere that you are assigning your database cursor to the ListView via a ListAdapter (CursorAdapter).

I think you need to do the google Notepad tutorials do all 3 but even just Notepad1 Tutorial explains about linking a SimpleCursorAdapter to a ListView. Look at this tutorial and pay particular attention to the fillData() method

private void fillData() {
    // Get all of the notes from the database and create the item list
    Cursor c = mDbHelper.fetchAllNotes();
    startManagingCursor(c);

    String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
    int[] to = new int[] { R.id.text1 };

    // Now create an array adapter and set it to display using our row
    SimpleCursorAdapter notes =
        new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
    setListAdapter(notes);
}

I hope that helps

这篇关于如何在列表视图显示从我的数据库中的数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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