Список не обновляется

#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.