Возможно ли перезагрузить ListView после загрузки данных? В основном я обновляю приложение для 4.1, но мой ListView загружает и анализирует XML-файл, я знаю, что мне нужно запустить это сейчас в фоновом потоке, но когда я открываю действие через вкладку, экран пуст. Я не уверен, как заставить это работать или какую часть кода мне нужно использовать в фоновом потоке, может кто-то поможет. Спасибо.Android ListView перезагружает данные
public class ThirdActivity extends ListActivity {
// All static variables
static final String URL = "http://selectukradio.com/SelectUKSchedule.xml"; // http://api.androidhive.info/pizza/?format=xml http://selectukradio.com/SelectUKSchedule.xml
// XML node keys
static final String KEY_ITEM = "day"; // parent node item
static final String KEY_ID = "link"; // id
static final String KEY_NAME = "dj"; // name
static final String KEY_COST = "time"; // cost
static final String KEY_DESC = "tempDay"; // description
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_3);
try{
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
map.put(KEY_COST, parser.getValue(e, KEY_COST)); // "Rs. " +
map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
// adding HashList to ArrayList
menuItems.add(map);
}
// Adding menuItems to ListView
ListAdapter adapter = new SimpleAdapter(ThirdActivity.this, menuItems,
R.layout.list_item,
new String[] { KEY_NAME, KEY_COST,KEY_DESC,KEY_ID }, new int[] {
R.id.name, R.id.cost, R.id.day, R.id.link });
setListAdapter(adapter);
// selecting single ListView item
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
String cost = ((TextView) view.findViewById(R.id.cost)).getText().toString();
String link = ((TextView) view.findViewById(R.id.link)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_NAME, name);
in.putExtra(KEY_COST, cost);
in.putExtra(KEY_ID, link);
startActivity(in);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}
}
listview.notifyDataSetChanged(); – Nick
спасибо за ответ, но я не могу получить это для работы, я могу решить это, установив minSDK на 8, это боль на обратной стороне – Pulsarman325
что-то подобное после загрузки всех данных 'listview.setAdapter (новый YourAdapter()) ' – deadfish