android - 如何将 List<String> 用于 ArrayAdapter 值(Java、Android)

标签 android listview items

我正在尝试在应用程序运行时更新 listView 项目。我可以通过使用 String[] 而不是 List 来让它工作,但我的目标是让它与 List 一起工作,这样我就可以在应用程序运行时向 listView 添加更多项目。

private List<String> items;

我已经为 MainActivity 类制作了一个列表。

ListView listView = (ListView)findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, items);
listView.setAdapter(adapter);

这行不通。我试图与 items.ToArray() 打交道,但没有找到解决方案。尝试使用谷歌搜索,但来自谷歌的所有结果仅重定向到展示如何制作 listView 的教程,并且每个教程都基于 String[] 数组。

如果我使用以下应用程序工作正常:

private String[] items = {"Banana", "Lime"};

我想在用户使用“adapter.notifyDataSetChanged();”将项目添加到列表时实时管理项目

我是 Java 的初学者,尤其是 Android 开发方面的初学者,因此非常感谢您的帮助。

最佳答案

您有两种方法可以做到这一点:

  • 将您的列表转换为数组(您可以找到一个很好的例子 here )。
  • 创建您自己的适配器并使用 List(另一个很好的例子 here)。

第一种方法:

List<String> stockList = new ArrayList<String>();
stockList.add("stock1");
stockList.add("stock2");

String[] stockArr = new String[stockList.size()];
stockArr = stockList.toArray(stockArr);

for(String s : stockArr)
    System.out.println(s);

第二种方法:

public class CustomAdapter extends BaseAdapter{   

    String [] result;
    Context context;
    int [] imageId;
    private static LayoutInflater inflater=null;

    public CustomAdapter(MainActivity mainActivity, String[] prgmNameList, int[] prgmImages) {
        // TODO Auto-generated constructor stub
        result=prgmNameList;
        context=mainActivity;
        imageId=prgmImages;
         inflater = ( LayoutInflater )context.
                 getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
}

关于android - 如何将 List<String> 用于 ArrayAdapter 值(Java、Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687518/

相关文章:

android - 我可以删除C :\users\my_user\AppData\Local\Android\中的文件吗

Android 如何为每个 ListView 项目使用不同的布局

java - 将 Flutter 图标传递给 android java

android - 客户端-服务器 : File transfer from Android to PC connected via socket

php - Woocommerce - 获取订单商品的价格和数量。

来自多对多数据库关系的 Android ListView

java - 结合 javafx 2 ListView 和 GridPane 功能

c# - ListView 跳过第一列

python - 为什么 python 的字典迭代似乎与副本一起工作?

c# - 限制 ItemsControl 的子项的编译时类型