Java 通过列表<;类名>;适应
问题是这个适配器给出了错误,尽管我已经将对象数组传递给它。(阅读下面的方法,然后你们会发现我想从你们那里知道的东西) 此方法声明私有类对象的列表。然后将该对象列表返回给onPostExecute方法Java 通过列表<;类名>;适应,java,android,Java,Android,问题是这个适配器给出了错误,尽管我已经将对象数组传递给它。(阅读下面的方法,然后你们会发现我想从你们那里知道的东西) 此方法声明私有类对象的列表。然后将该对象列表返回给onPostExecute方法 private class DownloadXmlTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... urls) {
private class DownloadXmlTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
try {
return loadXmlFromNetwork(urls[0]);
} catch (IOException e) {
return "I/O exception ae hy";
} catch (XmlPullParserException e) {
return "XML pull parser ke exception ae hy";
}
}
@Override
protected void onPostExecute(List<StackOverflowXmlParser.Entry> result) {
//Log.d(TAG,result.toString());
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,result);
setListAdapter(adapter);
}
private Object loadXmlFromNetwork(String urlString) throws XmlPullParserException, IOException {
InputStream stream = null;
// Instantiate the parser
StackOverflowXmlParser stackOverflowXmlParser = new StackOverflowXmlParser();
List<StackOverflowXmlParser.Entry> entries = null;
String title = null;
String url = null;
String summary = null;
try {
stream = downloadUrl(urlString);
entries = stackOverflowXmlParser.parse(stream);
} finally {
if (stream != null) {
stream.close();
}
}
for (StackOverflowXmlParser.Entry entry : entries)
{
Log.d(TAG, entry.link + " /" + entry.title);
}
return entries;
}
私有类下载XmlTask扩展AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…URL){
试一试{
返回loadXmlFromNetwork(URL[0]);
}捕获(IOE异常){
返回“I/O异常ae hy”;
}catch(XMLPullParseRexE){
返回“XML pull解析器ke异常ae hy”;
}
}
@凌驾
受保护的void onPostExecute(列表结果){
//Log.d(标记,result.toString());
阵列适配器;
adapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,结果);
setListAdapter(适配器);
}
私有对象loadXmlFromNetwork(字符串urlString)抛出XmlPullParserException,IOException{
InputStream=null;
//实例化解析器
StackOverflowXmlParser StackOverflowXmlParser=新的StackOverflowXmlParser();
列表条目=空;
字符串标题=null;
字符串url=null;
字符串摘要=null;
试一试{
stream=下载URL(urlString);
entries=stackOverflowXmlParser.parse(流);
}最后{
if(流!=null){
stream.close();
}
}
for(StackOverflowXmlParser.Entry:entries)
{
Log.d(标签,entry.link+“/”+entry.title);
}
返回条目;
}
数组适配器
要求您为其提供一个字符串[]
或列表
。您正在尝试传入对象[]
,该对象既不是字符串[]
或列表
。而且,您似乎确实在尝试使用StackOverflowXmlParser.Entry
对象列表填充列表视图
,这些对象不是字符串
对象
我猜正确的答案是创建ArrayAdapter
,而不是ArrayAdapter
无论如何,您需要确保声明中的数据类型(
ArrayAdapter
中的String
)与提供要调整的数据的构造函数参数中的数据类型相匹配。我认为应该是onPostExecute(列表结果)
你的任务应该是
extends AsyncTask
错误仍然存在。实际上,我解析xml,从每篇文章中获取链接和标题标记。该链接和标题在Entry类中声明。entries=stackOverflowXmlParser.parse(stream);获取该列表,并将其发送到OnPostExuect。从那里,我想填充列表视图。那么在onPostExecute()中应该做什么@user3585510:看起来您有不止一个错误;请查看Alex的答案,了解我最初遗漏的另一个错误。更准确地说,我遵循了本教程:现在我希望条目填充到列表视图中。我已编辑了问题并发布了该类。请检查该类,并让我知道我应该在哪里以及应该在哪里更准确地说,我遵循了本教程:现在我希望在列表视图中填充条目