2013-02-20 90 views
1

我是android新手。我想要显示从数据库插入的数据到一个表。我用List来获取数据。不能完全从数据库中清除数据的列表

public List<user> getAllUsers() { 
    List<user> users = new ArrayList<user>(); 

    Cursor cursor = database.query(SqlLiteHelper.TABLE_USER, allColumns, null, null, null, null, null); 

    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     user varUser = cursorToUser(cursor); 

     //Log.v("user name",varUser.getName().toString()); 

     users.add(varUser); 
     cursor.moveToNext(); 
    } 
    //Log.v("user name",users.get(0).getName().toString()); 

    cursor.close(); 
    return users; 
    } 



    private user cursorToUser(Cursor cursor) { 
    user varUser = new user(); 

    //Log.v("user id", cursor.getString(1).toString()); 

    varUser.setID(cursor.getLong(0)); 
    varUser.setName(cursor.getString(1)); 
    varUser.setPhone(cursor.getString(2)); 
    varUser.setEmail(cursor.getString(3)); 
    return varUser; 
} 

我写了一篇关于UserDataSource.java

此代码

然后,我需要显示这些我用下面的代码

 databaseSource = new UserDataSource(this); 
    databaseSource.open(); 

    List<user> values = databaseSource.getAllUsers(); 
    Log.v("information", values.get(0).getName().toString()); 
    ArrayAdapter<user> adapter = new ArrayAdapter<user>(this, android.R.layout.simple_list_item_1, values); 
    setListAdapter(adapter); 

在列表中这不是增加值的数据。我使用log.v来检查数据是否回来。我发现数据来自数据库。只有当我尝试打印列表或将其插入到simple_list_item_1时,它才会解决问题。

在打印

[email protected]

的击打其假设从数据库打印的名称。

数据库表名是用户。

请让我知道我缺少什么。

这里就是我试图添加这些列表

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 


<Button 
    android:id="@+id/all_user_back" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="10dp" 
    android:text="Back" /> 



    <ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="384dp" > 
</ListView> 




</LinearLayout> 
+0

这是什么cursorToUser(光标);方法呢? – 2013-02-20 08:19:21

+0

函数corsorToUser(光标游标)用于使用检索数据创建用户类的对象。我将对象列表保存为LIST – 2013-02-20 08:21:02

+0

我们需要查看您的用户类和cursorToUser()方法。唯一我能想到的是,你以某种方式将错误的列映射到getName()..请更新 – Entreco 2013-02-20 08:24:08

回答

2

如果您的列表显示[email protected]布局的我的xml文件,这意味着你缺少你usertoString方法。实现一个toString,它返回用户的名字。

+0

哦对。非常感谢。 – 2013-02-20 08:26:30

+0

还有一件事我只是不明白。为什么我的问题变成-1。我的意思是我错过了这个问题上的一些事情? – 2013-02-20 08:27:49

+0

我无法回答,对我来说问题看起来不错。 – Henry 2013-02-20 08:33:24

0

这是因为你的ArrayAdapter调用了你的用户对象的toString()方法。您必须实现toString()方法,或者如果您想在列表中显示多个字符串,则必须编写自己的Adapter。

0

你得到错误的结果,因为

Log.v("information", values.get(0).getName().toString()); 

values.get(0)将返回类用户包括价值观,如姓名,身份证,手机等没有和存取权限名字你调用getName方法,它是完美的。但对于适配器,您直接通过List<user> values。因此,当适配器从中提取数据时,它将从中提取类User而不是不同的值。所以要访问的值你必须得到定位值列表,提取值名称,ID等,然后将其传递到适配器