How to fill a ListView with a string-array?

android

Solution

You can create your adapter with a one liner, check out the static method ArrayAdapter createFromResource(Context context, int textArrayResId, int textViewResId)

The first argument will probably be your Activity, the second is `R.array.bookmark_titles`, and the third is a layout to use.

To clarify based on the comments, the method accepts `int`, which is exactly what the constants in your generated `R` class are stored as.

Here's a complete example, assuming this is being called from an Activity:

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

In this case, `android.R.layout.simple_list_item_1` refers to an XML layout that is provided by the Android SDK. You can change this if needed.

Problem

I want to show these itens at my ListView ``` <string-array name="bookmark_titles"> <item>Google</item> <item>Bing</item> <item>Gmail</item> </string-array> ``` I have a method that gets these values. ``` 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; } ``` How can I call the method getBookmarks in my main.java to fill the ListView? I have already created a ListView. It is: ``` <ListView android:id="@+id/my_listView" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="#ECECEC" android:dividerHeight="1sp" /> ``` main.java I am trying to do something like this: ``` 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); ```

Original source