我是android新手& &;java我有一个包含值的哈希表。值是对象(任务类有3个属性code,title,state)
我试图在哈希表中获得所有任务的数据并在列表视图中显示它们
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
is哈希表名称
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: mainjava.lang.IllegalStateException: ArrayAdapter要求资源ID为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.l outout .simple_list_item_1"?
将适配器泛型类型字符串更改为类名,即task
,因此它看起来像
ArrayAdapter<task> arrayAdapter = new ArrayAdapter<task>(this,R.layout.list, arr );
当然,让你的类名以大写字母开头,如TaskDAO
而不是taskDAO