我是 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/