2012-10-25 40 views
5

我想在我的ListView如何使用字符串數組填充ListView?

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

顯示這些itens我有得到這些值的方法。

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); 

回答

9

你可以用一個襯墊創建您的適配器,檢查出的靜態方法ArrayAdapter createFromResource(Context context, int textArrayResId, int textViewResId)

第一個參數可能是您的活動,第二個參數是R.array.bookmark_titles,第三個參數是要使用的佈局。

要根據意見澄清,該方法接受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指的是由Android SDK中提供的XML佈局。如果需要,你可以改變它。

+1

然後附上'ArrayAdapter.createFromResource(返回值)'與'ListView控件lv.setAdapter()'。 –

+0

我會盡力的。我正在使用ArrayAdapter()方法,但它不起作用。 – androidevil

+0

textArrayResId \t用作數據源的數組的標識符。 textViewResId \t用於創建視圖的佈局的標識符。 這是什麼意思?他們是int。我在哪裏獲得這些價值?謝謝。 – androidevil

3

您可以用ArrayAdapter做到這一點,有它使用數組或列表,給它的數據

lv.setAdatper(new ArrayAdapter<String>(context, R.layout.some_layout_to_use, R.id.some_textview_in_layout, listData); 
+0

對不起,但我不明白。你能舉個例子嗎?我的代碼現在包含了一種我正在嘗試的方式。謝謝! – androidevil