java - 从包含对象作为值的哈希表创建 listView 适配器

标签 java android listview

我是 android 和 java 的新手 我有一个包含值的哈希表。 值是对象(具有 3 个属性 code、title、state 的任务类)

我正在尝试获取哈希表中所有任务的数据并在 ListView 中显示它们

ListView list = (ListView)findViewById(R.id.output_list);

ArrayList<task> arr = new ArrayList<task>(tasklist.values());

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.list, arr );

list.setAdapter(arrayAdapter);

tasklist 是哈希表名称

task是一个实体类

public class taskDAO {
    public static final Hashtable<Integer , task> tasklist = new Hashtable<Integer , task>();

    public static final boolean addTask (task t){

        tasklist.put(t.code,t);
        return true;

    }

异常

E/AndroidRuntime: FATAL EXCEPTION: main java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView

我尝试了很多东西,但由于我不明白这是如何工作的,所以我无法弄清楚 一个办法, 有什么帮助吗?

最佳答案

您的错误告诉您适配器的第二个参数需要是 TextView 布局,而不是 ListView 布局(或 list.xml 文件包含的任何内容)

如果您在 task 类上实现 toString 方法(由于 Java 命名约定,您应该将其重命名为 Task)。

然后,您将在使用时看到数据

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
    this, 
    android.R.layout.simple_list_item_1, 
    arr);

有关该布局的更多详细信息,请参阅 What is "android.R.layout.simple_list_item_1"?

关于java - 从包含对象作为值的哈希表创建 listView 适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40513297/

相关文章:

java - Jsoup getElementsByAttributeValueMatching

java-无法从非静态中找到方法

java - 正确使用 fragment 中的实例状态保存

android - 在同一 fragment 事务中添加多个 fragment

android - 在 Android 上将 div 加载到 webview

Android Action Bar (Sherlock Action Bar) - 将下拉微调器一直定位到右侧

c# - 编辑项目模板中的文件上传

java - 如何将外部 .txt 文件中的文本与字符串进行比较

java - Androidfragment选项卡式布局,重新选择选项卡3,listview消失

android - 如何将ListView分成多个部分并加载?