#android
#Android
Вопрос:
Я пытаюсь обновить свой просмотр списка после удаления из него элементов, но я не получаю желаемого результата. Элементы удаляются при перезагрузке действия, но не в момент нажатия кнопки удаления. Вот мой код:
public void deletelist()
{
mylist = new ArrayList<HashMap<String,Object>>();
HashMap<String,Object> map = new HashMap<String, Object>();
for(int i=0;i<favtitle.size();i )
{
map = new HashMap<String, Object>();
map.put("train",favtitle.get(i));
map.put("value",favloc.get(i));
map.put("employer",favemp.get(i));
mylist.add(map);
}
mSchedule = new SimpleAdapter(this, mylist, R.layout.listdelete,
new String[] {"train","value","employer"}, new int[] {R.id.dept,R.id.jobloc,R.id.employer});
lv.setAdapter(mSchedule);
lv.setDividerHeight(2);
lv.setCacheColorHint(Color.WHITE);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,View view,int position,long id)
{
String str3 = favtitle.get(position);
db.delete("Favorites7","title= '" str3 "'",null);
db.close();
//Data Base Select
db = openOrCreateDatabase(
"ClassifiedAds.db"
, SQLiteDatabase.CREATE_IF_NECESSARY
, null
);
db.setVersion(1);
db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
//End-----
cur= db.query("Favorites7",
null, null, null, null, null, null);
cur.moveToFirst();
while (cur.isAfterLast() == false) {
favtitle.add(cur.getString(1));
favloc.add(cur.getString(3));
favemp.add(cur.getString(2));
lat.add(cur.getString(7));
log.add(cur.getString(8));
cur.moveToNext();
}
cur.close();
//mylist = new ArrayList<HashMap<String,Object>>();
HashMap<String,Object> map = new HashMap<String, Object>();
for(int i=0;i<favtitle.size();i )
{
map = new HashMap<String, Object>();
map.put("train",favtitle.get(i));
System.out.println("===" favtitle.get(i));
map.put("value",favloc.get(i));
System.out.println("===" favloc.get(i));
map.put("employer",favemp.get(i));
System.out.println("===" favemp.get(i));
mylist.add(map);
}
mSchedule.notifyDataSetChanged();
mSchedule = new SimpleAdapter(Favorites.this, mylist, R.layout.listdelete,
new String[] {"train","value","employer"}, new int[] {R.id.dept,R.id.jobloc,R.id.employer});
lv.setAdapter(mSchedule);
lv.setDividerHeight(2);
lv.setCacheColorHint(Color.WHITE);
}
});
}
Буду признателен за любую помощь.
Заранее благодарю.
Ответ №1:
Используйте метод notifyDataSetChanged() с listview в пределах условия, при котором вы удаляете запись, сразу после удаления записи поместите код listview.notifyDataSetChanged(). надеюсь, это решит вашу проблему.
Комментарии:
1. Используйте таким образом: listview.getAdapter()).notifyDataSetChanged();
2. Он не принимает code…do у вас есть какой-нибудь пример ….. просмотра списка с notifyDataSetChanged
3. проверьте это:**((SimpleAdapter)l1.getAdapter()).notifyDataSetChanged();** где l1 — это объект ListView .
4. попробуйте это
((SimpleAdapter)parent.getAdapter()).notifyDataSetChanged()
Ответ №2:
Вы пробовали invalidateViews, это перерисует ваш просмотр списка.
Комментарии:
1. я реализовал это, но по-прежнему безуспешно
Ответ №3:
Моя проблема решена. Что мне нужно было делать, так это то, что всякий раз, когда arraylist перезагружался, мне приходилось очищать предыдущий. Нравится:
массив-имя списка.очистить(); перед добавлением элементов в hashmap.