2012-10-24 56 views
1

我有以下課程。如何從ArrayList創建ListView?

public class BkmCollect extends ArrayList<Bkmark> { 

    public static BkmCollect getTestBkm(Context context) { 
     BkmCollect bookmarks = new BkmCollect(); 

     String[] titles = context.getResources().getStringArray(R.array.bookmark_titles); 
     String[] urls = context.getResources().getStringArray(R.array.bookmark_urls); 
     TypedArray icons = context.getResources().obtainTypedArray(R.array.bookmark_icons); 

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

     return bookmarks; 
    } 
} 

「add」方法在這個類中實現。而「Bkmark」類是我的項目中創建的另一個類。 我想創建一個ListView,它將從BkmCollect.getTestBkm方法中獲取數據。我如何在我的onCreate方法中執行此操作?謝謝!

包含在ListView中要插入的領域

XML文件:

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

    <string-array name="bookmark_urls"> 
     <item>http://www.google.com</item> 
     <item>http://www.bing.com/</item> 
     <item>http://www.gmail.com</item> 
    </string-array> 

    <array name="bookmark_icons"> 
     <item>@drawable/google</item> 
     <item>@drawable/bing</item> 
     <item>@drawable/gmail</item> 
    </array> 
</resources> 

我試圖做這樣的事情:

ListView lv = (ListView) findViewById(R.id.favoritos_listView); 
ArrayAdapter adapter; 
Context context = getApplicationContext(); 
ArrayList<Bkmark> my_array = BkmCollect .getTestBkm(context); 
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, my_array); 
lv.setAdapter(adapter); 

在此處輸入代碼

+2

你的意思是一個ListView的權利? –

+0

@碧西呀!抱歉。 – androidevil

回答

1

創建您layout.xml文件ListView,並且做一個

檢索它在Java
ListView lv = (ListView)findViewById(R.id.your_list_view_id); 

,並通過這樣做填充ListView:

ArrayList<String> my_array_list = new ArrayList<String>(); 
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, my_array_list); 
lv.setAdapter(arrayAdapter); 

編輯

例如說你有,你加一些對象的ArrayList

public ArrayList<String> getPopulatedArrayList() { 
    ArrayList<String> myList = new ArrayList<String>(); 
    myList.add("One"); 
    myList.add("Two"); 
    myList.add("Three"); 

    return myList; 
} 

而且在你onCreate方法

ArrayAdapter adapter; 
ListView lv; 
lv = (ListView)findViewById(R.id.my_list); 

ArrayList<String> list = getPopulatedArrayList(); 
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list); 
lv.setAdapter(adapter); 

Remeber,這只是工作的方法列表中有一個TextView,如果你需要更多的數據在你的列表中,你應該創建自己的類,其中前往往BaseAdapter。可以找到一個例子here

現在沒有什麼可以不清楚的了?如果是這樣,只需添加評論。

+0

ListView已經在我的佈局中創建。XML和它在我的Java中檢索。而我讓你消化不過,但它不起作用。 – androidevil

+0

看到我的編輯,希望這對你有用。 –

+0

關鍵是我有一個包含一些字段的XML文件,這些字段必須出現在ListView中。我編輯了我的代碼。現在它包含XML和我編寫的解決方案,但它不能正常工作。 – androidevil

0

一個視圖?你的意思是你想要添加一些視圖到屏幕上嗎?

如果是這樣,每種佈局類型都有這樣的功能。在LinearLayout中,有.addView()。如果你想做更有趣的事情,你可以創建LinearLayout.LayoutParams並調整它們。許多Android程序員不會手動創建視圖。

如果視圖不會發生很大的變化,或者您可以隱藏其中的部分視圖,您也可以考慮使用ListView和/或ListAdapter。

+0

對不起!我的意思是ListView。我改變了這個問題。 – androidevil