Я пишу 3 класса / действия, которые, я надеюсь, (в конце концов) смогут загрузить проанализированные данные XML в simpleListAdapter, используя стандартные макеты Android.
Моя стратегия заключается в том, что задание A: запускает анализатор SAX, загружает обработчик, извлекает ArrayList> из задания C и загружает ArrayList в simpleListAdapter.
Действие B - это обработчик (который, я знаю, работает, потому что я использовал его раньше, никаких проблем там нет).
Наконец, действие C содержит методы, которые возвращают строки, которым задаются значения обработчиком, а затем загружают эти строки в ArrayList>, который отправляется в действие A через намерение.
Но все этопоявляется черный экран.
Я использую тестовый XML-сайт: http://www.google.com/ig/api?weather=Boston+Massachusetts"
Вот код для Деятельности A + C (я знаю, что обработчик работает).
Активность (A):
public class xmlparser extends ListActivity implements OnClickListener {
static final String XMLsite = "http://www.google.com/ig/api weather=Boston+Massachusetts";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@SuppressWarnings("unchecked")
@Override
try{
URL website = new URL(XMLsite);
//getting xmlreader to parse data
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
HandlingXMLStuff doingWork = new HandlingXMLStuff();
xr.setContentHandler(doingWork);
xr.parse(new InputSource(website.openStream()));
ArrayList<HashMap<String, String>> list =(ArrayList<HashMap<String, String>>) getIntent().getSerializableExtra("arraylist");
String[] from = { "name", "purpose" };
int[] to = { android.R.id.text1, android.R.id.text2 };
SimpleAdapter adapter = new SimpleAdapter(this, list,
android.R.layout.simple_list_item_2, from, to);
setListAdapter(adapter);
}catch(Exception e){
}
}
Упражнение (C):
package com.school;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class XMLDataCollected extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, xmlparser.class);
ArrayList<HashMap<String, String>> list = buildData();
intent.putExtra("arraylist", list);
startActivity(intent);
}
int temp = 0;
String city = null;
public void setCity(String c){
city = c;
}
public void setTemp(int t){
temp = t;
}
private ArrayList<HashMap<String, String>> buildData() {
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
list.add(putData(city, "temp"));
list.add(putData("city", "temp"));
list.add(putData("city", "temp"));
return list;
}
private HashMap<String, String> putData(String name, String purpose) {
HashMap<String, String> item = new HashMap<String, String>();
item.put("name", name);
item.put("purpose", purpose);
return item;
}
}
Любой совет поможет.
PS Я использовал эту процедуру XML, прежде чем загружать данные вtextview, так что я знаю, что он способен, по крайней мере, анализировать теги XML и устанавливать их в методах в Деятельности C, а затем извлекать и устанавливать строки в текстовом представлении, но моя конечная цель - иметь возможность загружать информацию в simpleListAdapter.
Спасибо