2013-02-20 37 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等,然後將其傳遞到適配器