Android の ListView に要素を動的に追加するにはどうすればよいですか? 質問する

Android の ListView に要素を動的に追加するにはどうすればよいですか? 質問する

動的に作成するためのチュートリアルを説明または提案してくれる人はいますか?ListViewアンドロイドでは?

私の要件は次のとおりです:

  • ボタンを押すことで新しい要素を動的に追加できるはずです。
  • 理解しやすいほどシンプルであること(パフォーマンスの向上や変換ビュー、 例えば)

このトピックに関してかなりの数の質問があることは承知していますが、私の質問に答えるものは見つかりませんでした。

ベストアンサー1

まず、プロジェクトのres/layout/main.xmlフォルダーに XML レイアウトを作成します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <Button
        android:id="@+id/addBtn"
        android:text="Add New Item"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="addItems"/>
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false"
    />
</LinearLayout>

これは、上部にボタン、下部にリスト ビューがあるシンプルなレイアウトです。 には、使用できるデフォルトの を定義するIDListViewがあることに注意してください。@android:id/listListViewListActivity

public class ListViewDemo extends ListActivity {
    //LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS
    ArrayList<String> listItems=new ArrayList<String>();

    //DEFINING A STRING ADAPTER WHICH WILL HANDLE THE DATA OF THE LISTVIEW
    ArrayAdapter<String> adapter;

    //RECORDING HOW MANY TIMES THE BUTTON HAS BEEN CLICKED
    int clickCounter=0;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        adapter=new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,
            listItems);
        setListAdapter(adapter);
    }

    //METHOD WHICH WILL HANDLE DYNAMIC INSERTION
    public void addItems(View v) {
        listItems.add("Clicked : "+clickCounter++);
        adapter.notifyDataSetChanged();
    }
}

android.R.layout.simple_list_item_1は Android が提供するデフォルトのリスト項目レイアウトであり、複雑でないものにはこの標準レイアウトを使用できます。

listItemsは、ListView に表示されるデータを保持するリストです。すべての挿入と削除は で実行する必要がありますlistItems。 の変更はlistItemsビューに反映される必要があります。これは によって処理されArrayAdapter<String> adapter、次の方法で通知されます。

adapter.notifyDataSetChanged();

アダプタは、 である可能性のあるコンテキストactivity/listactivity、個々のリスト項目のレイアウト、そしてリストに表示される実際のデータであるリストという 3 つのパラメータでインスタンス化されます。

おすすめ記事