1

我有,下面的课。

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

在这里输入代码

4

3 回答 3

1

您应该使用与 ArrayAdapter 关联的 ListView

请参阅http://www.ezzylearning.com/tutorial.aspx?tid=1763429以获得良好的教程(带有性能调整)

于 2012-10-24T19:12:27.700 回答
1

ListView在您的文件中创建一个layout.xml,并通过执行 a 在 java 中检索它

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

并通过执行以下操作填充列表视图:

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

请记住,这仅适用于 List 与 one TextView,如果您需要列表中的更多数据,您应该创建自己的扩展类BaseAdapter。可以在这里找到一个例子

现在有什么不清楚的吗?如果是这样,只需添加评论。

于 2012-10-24T19:13:11.967 回答
0

一个视图列表?你的意思是你想在屏幕上添加一堆视图?

如果是这样,则每种布局类型中都有执行此操作的功能。在 LinearLayout 中,有 .addView()。如果你想做一些更高级的事情,你可以创建 LinearLayout.LayoutParams 并调整它们。许多 Android 程序员不会手动创建视图。

如果视图不会发生太大变化或者您可以隐藏其中的一部分,您还可以考虑使用 ListView 和/或 ListAdapter。

于 2012-10-24T18:57:04.867 回答