0

私はAndroidで簡単なアプリケーションを開発しています。私は(今のところ)カテゴリのリストを持っており、それをリストとして表示したいと思います。次に(しかしこれは遠く離れています)クリックして、いくつかの機能で別のアクティビティを開始します...まあ、状況:

私のsingle_list_item.xml:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
  <!-- Name Label -->
  <TextView android:id="@+id/category_label"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"           
            android:textStyle="bold"
            android:paddingTop="10dip"
            android:paddingBottom="10dip"
            android:textColor="#43bd00"/>
  <!-- Description Label -->

</LinearLayout>

ここでの主なアクティビティでは、アダプターとレイアウトを呼び出します。

List<categorie> values = datasource.getAllCategorie();

        // Use the SimpleCursorAdapter to show the
        // elements in a ListView
        ArrayAdapter<categorie> adapter = new ArrayAdapter<categorie>(this,
            R.layout.single_list_item, values);
        setListAdapter(adapter);

ここのデータソースで、getAllCategorieを宣言します。

public List<categorie> getAllCategorie() {
            List<categorie> categorie = new ArrayList<categorie>();

            Cursor cursor = database.query(MySQLiteHelper.TABLE_CATEGORIE,
                allCategorieColumns, null, null, null, null, null);

            cursor.moveToFirst();
            while (!cursor.isAfterLast()) {
              categorie categoria = cursorToCategorie(cursor);
              categorie.add(categoria);
              cursor.moveToNext();
            }
            // Make sure to close the cursor
            cursor.close();
            return categorie;
          }

そして最後にcategorie.class:

public class categorie {
      private long id;
      private String nome;
      private long preferita;

      public long getId() {
        return id;
      }

      public void setId(long id) {
        this.id = id;
      }

      public String getNome() {
        return nome;
      }

      public void setNome(String nome) {
        this.nome = nome;
      }



      public long getPreferita() {
        return preferita;
    }

    public void setPreferita(long preferita) {
        this.preferita = preferita;
    }

    // Will be used by the ArrayAdapter in the ListView
      @Override
      public String toString() {
        return nome;
      }
    } 

現在、アプリを実行すると、リストビューの開始中にフリーズし、完全に空になります。名前やIDなどの各カテゴリ要素を配置する場所、または「いいね」されているかどうかを指定したいと思います(categorie.classでPreferitaを取得して設定します)。

私が始めたとき、アダプターの部分は次のとおりでした。

ArrayAdapter<categorie> adapter = new ArrayAdapter<categorie>(this,
            android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);

そして、すべてが魔法のようにOKでした...なぜデフォルトのレイアウトを使用してもOKなのですか?繰り返しますが、何がどこに行くのかをどこで指定しますか?

前もって感謝します。

4

1 に答える 1

1

簡単なリストを実装したい場合は、ストックを使用しても問題ありませんArrayAdapter。Androidは、アダプターに提供するオブジェクトを確認toString()し、それらのオブジェクトを呼び出して、にそれを入力しTextViewます。そのレイアウトにはwithが含まれているため、使用すると「魔法のように」機能しましたid=@android:id/text1Stringandroid.R.layout.simple_list_item_1TextViewid=@android:id/text1

の各行のレイアウトをより細かく制御したい場合はListViewSimpleAdapterを使用して、行レイアウトの特定の値に値をマップできますViews。または、を拡張して独自のアダプタクラスを作成することもできますArrayAdapter。独自のアダプタを作成することをお勧めします。これは、楽しく、リストがどのように作成されるかについての洞察を提供するためです。これを開始する方法のガイドです

于 2012-12-18T12:31:39.180 に答える