0

您好,我有这个 SimpleAdapter 是为了在 ListView 中显示一些通知。这些通知在 localist 中ArrayList。这是代码:

SimpleAdapter adapter = new SimpleAdapter(this,localist, R.layout.rss_list_item,new String[] {"title","pubDate"},new int[] {R.id.title, R.id.pubDate });
    final ListView lv = (ListView) findViewById(android.R.id.list);
    lv.setAdapter(adapter);

问题是它在这里向我显示了三个错误。第一个是在 localist 并说“localist 无法解析为变量”。

第二个和第三个在

lv.setAdapter(adapter);

一个在点上写着“标记上的语法错误,错位的构造”,另一个在括号内的适配器上,上面写着“标记上的语法错误“适配器”,VariableDeclaratorId 应该在这个标记之后”。我认为第二个和第三个错误是由于第一个错误引起的。你有任何想法如何解决这个问题吗?提前很多!

编辑:在其他活动中声明和创建本地化程序是代码:

protected Integer doInBackground(Void... params) {
        ArrayList<HashMap<String, String>> localist = new ArrayList<HashMap<String, String>>();
        String xml = ParseXMLmethods.getXML();
        Document doc = ParseXMLmethods.XMLfromString(xml);
        if (doc != null) {
        NodeList children = doc.getElementsByTagName("item");
        ZERO_FLAG = false;
        if (children.getLength() == 0) {
        ZERO_FLAG = true;
        publishProgress();
        }
        for (int i = 0; i < children.getLength(); i++) {
        HashMap<String, String> map = new HashMap<String, String>();
        Element e = (Element) children.item(i);
        map.put("title", ParseXMLmethods.getValue(e, "title"));
        map.put("pubDate", ParseXMLmethods.getValue(e, "pubDate"));
        map.put("link", ParseXMLmethods.getValue(e, "link"));
        map.put("description",ParseXMLmethods.getValue(e, "description"));
        localist.add(map);

        }
4

1 回答 1

2

从你的评论中,我想我明白发生了什么。看起来您Asynctask的文件与Adapter. 有几种方法可以解决这个问题。一种是在任务完成后使用 aninterface来设置变量。Adapter

请参阅此答案以创建interfacefor an AsyncTask

一种更简单的方法是使您成为您所在AsyncTask位置的内部类Adapter并创建localist该类的成员变量,以便两者都可以访问它。然后你可以设置你的Adapter和你ListViewonPostExecute()

于 2013-09-26T23:10:40.043 回答