如何在列表视图显示从我的数据库中的数据? [英] How do i display data from my database in a listview?
问题描述
喜我在我的数据库中的某些三个表。我希望能够从在ListView数据库显示姓名。
- 首先我打开数据库,并添加一个客户的名字,姓氏和号码。然后我关闭数据库。
- 从这里,我感到困惑,并以我怎么能在同一行显示姓名,但在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.
- first i open the database and add a client's name, surname and number. Then i close the database.
- 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屋!