10

これらのアイテムを ListView に表示したい

<string-array name="bookmark_titles">
    <item>Google</item>
    <item>Bing</item>
    <item>Gmail</item>
</string-array>

これらの値を取得するメソッドがあります。

public static Collection getBookmarks(Context context) {
    Collection bookmarks = new Collection();

    String[] titles  = context.getResources().getStringArray(R.array.bookmark_titles);

    for (int i = 0; i < titles.length; i ++) {
        bookmarks.add(titles[i]);
    }

    return bookmarks;
}

main.java でメソッド getBookmarks を呼び出して ListView を埋めるにはどうすればよいですか?

私はすでに ListView を作成しています。それは:

<ListView
    android:id="@+id/my_listView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:divider="#ECECEC"
    android:dividerHeight="1sp" />

main.java 私は次のようなことをしようとしています:

ListView lv = (ListView) findViewById(R.id.my_listView);

ArrayList<Bookmark> my_array = BookmarkCollection.getTestBookmarks(context);
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, my_array);    
lv.setAdapter(adapter);
4

2 に答える 2

15

ワンライナーでアダプターを作成できます。静的メソッド ArrayAdaptercreateFromResource(Context context、int textArrayResId、int textViewResId)を確認してください。

最初の引数はおそらくあなたのアクティビティであり、2番目はR.array.bookmark_titlesであり、3番目は使用するレイアウトです。

コメントに基づいて明確にするために、メソッドはを受け入れますint。これは、生成されたクラスの定数が正確にR格納されるものです。

これがアクティビティから呼び出されていると仮定した場合の完全な例を次に示します。

ArrayAdapter<CharSequence> aa = ArrayAdapter.createFromResource(this, R.array.bookmark_titles, android.R.layout.simple_list_item_1);
myListView.setAdapter(aa);

この場合、android.R.layout.simple_list_item_1はAndroidSDKによって提供されるXMLレイアウトを指します。必要に応じてこれを変更できます。

于 2012-10-25T13:31:43.223 に答える
3

ArrayAdapter を使用してこれを行うことができ、Array または List を使用してデータを与えることができます。

lv.setAdatper(new ArrayAdapter<String>(context, R.layout.some_layout_to_use, R.id.some_textview_in_layout, listData);
于 2012-10-25T13:42:07.013 に答える