所以我正在制作一个应用程序,其中MainActivity主要基于ListView(事实上,这就是所有的MainActivity。)所以我从ListActivity扩展了我的MainActivity。问题是,我正在尝试从AsyncTask内部更新我的UI线程,它给我一个错误,上面写着The method setAdapter(ArrayAdapter<String>) is not defined for the type MainActivity.GetContactInfo
所以我想知道如何定义setAdapter。如果我必须实际实例化ListView项,我将实例化哪个ListView项?我正在尝试为ListView创建自定义布局,所以我使用的是list_item xml文件,而我的activity_main.xml文件中只有一个ListView,所以我不认为我会抓住ListView来实例化ListView。
如何简单地让setAdapter工作而不需要连接到ListView的任何帮助都会很有帮助(因为我从ListView扩展了我的类,所以我不必将它附加到ListView就是我看到的。)
提前致谢。
编辑:AsyncTask代码:
private class GetContactInfo extends AsyncTask<String, Void, ContactInfo[]> {
@Override
protected ContactInfo[] doInBackground(String... url) {
URL json = null;
try {
json = new URL(url[0]);
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
try {
contacts = mapper.readValue(json, ContactInfo[].class);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return contacts;
}
@Override
protected void onPostExecute(ContactInfo[] result) {
int length = result.length;
ArrayList<String> names = new ArrayList<String>();
for (int i = 0; i < length; i++) {
names.add(result[i].getName());
}
adapter = new ArrayAdapter<String>(local, R.layout.list_item, R.id.contactName, names);
setAdapter(adapter);
}
}
答案 0 :(得分:1)
setAdapter()方法属于ListView对象。如果已从ListActivity进行扩展,则需要使用setListAdapter(ArrayAdapter)。 ListActivity定义setListAdapter()方法,而ListView对象定义setAdapter方法。
将setAdapter()更改为setListAdapter(),这将有效。