1

私はアンドロイドが初めてです。データベースからテーブルに挿入されたデータを表示したい。リストを使用してデータを取得しました。

 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

ただし、データベースから名前を出力することを想定しています。

データベース テーブル名は user です。

何が欠けているのか教えてください。

ここに、これらのリストを追加しようとしているレイアウトの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がないことを意味します。ユーザーの名前を返す を実装します。toStringusertoString

于 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は、name、id、phone noなどの値で構成され、名前にアクセスするには、getNameメソッドを呼び出します。これは完璧です。ただし、アダプタの場合はList<user> values直接渡します。したがって、アダプタがデータを抽出すると、異なる値ではなく、クラスUserが抽出されます。したがって、値にアクセスするには、リストの位置付けされた値を取得し、値の名前、IDなどを抽出して、それをアダプターに渡す必要があります

于 2013-02-20T08:31:13.027 に答える