2013-09-26 2 views
0

Привет, у меня есть этот SimpleAdapter, чтобы отображать некоторые уведомления в ListView. Эти уведомления находятся в ArrayList localist. вот код:Android: Ошибка SimpleAdapter

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); 

Дело в том, что он показывает мне три ошибки here.The Первый в localist и говорит «localist не может быть разрешен к переменной».

Второй и третий находятся на

lv.setAdapter(adapter); 

один в точке, которая говорит «ошибка синтаксиса на маркер (ы), неуместной конструкции (ы)», а другой на адаптер внутри скобках, что говорит «Синтаксическая ошибка на токеневом адаптере», VariableDeclaratorId ожидается после этого токена ». Я считаю, что вторая и третья ошибки вызваны первой ошибкой. У вас есть идеи, как это решить?

EDIT: localist объявлен и создан в другой деятельности здесь код:

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); 

     } 
+0

Покажите нам еще код. Где вы определяете и создаете локалиста? – SimonSays

+0

@SimonSays здесь вы идете – SoCo

+0

Это единственное место, где вы пытаетесь использовать 'localist'? – codeMagic

ответ

2

Из ваших комментариев, я думаю, я вижу, что происходит. Похоже, что ваш Asynctask находится в отдельном файле, кроме вашего Adapter. Есть несколько способов исправить это. Можно было бы использовать interface, чтобы установить переменную в Adapter, как только ваша задача будет завершена.

See this answer для создания interface для AsyncTask.

Более простой способ будет сделать свой AsyncTask внутренний класс, где ваш Adapter это и сделать localist переменной членом этого класса, так что оба имеют доступ к нему. Затем вы можете установить Adapter и ListView в onPostExecute().

+0

ОК, я попробую! большое спасибо за ваше время и терпение – SoCo

+0

Добро пожаловать. Дайте мне знать, как это происходит. – codeMagic

+0

все еще не работает:/Могу ли я отправить вам свой код, чтобы узнать, правильно ли я это сделал? – SoCo

Смежные вопросы