1

我是安卓新手。我想将插入的数据从数据库显示到表中。我已经使用 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 时,它才会出现问题。

正在打印

com.example.given_n_take.user@41221338

但是它假设从数据库中打印名称。

数据库表名是用户。

请让我知道我错过了什么。

这是我试图添加这些列表的布局的 xml 文件

<?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>
4

3 回答 3

2

如果您的列表显示com.example.given_n_take.user@41221338这意味着您toString在类中缺少一个方法user。实现一个toString返回用户名的 a 。

于 2013-02-20T08:20:55.350 回答
0

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

于 2013-02-20T08:24:12.763 回答
0

你得到错误的结果是因为

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

values.get(0)将返回 User 类,其中包含名称、id、电话号码等值,并访问您正在调用的 getName 方法的名称,这是完美的。但是对于适配器,您List<user> values直接通过。因此,当适配器从中提取数据时,它将从中提取类 User 而不是不同的值。所以要访问值,您必须获取列表的定位值、提取值名称、id 等,然后将其传递给适配器

于 2013-02-20T08:31:13.027 回答