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

1

Я пытаюсь обновить представление списка после удаления элементов из него, но я не получаю желаемого результата. Элементы удаляются, когда я перезаряжаю активность, но не в то время, когда я нажимаю кнопку удаления. Вот мой код:

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


        }
    });
}

Любая помощь будет оценена по достоинству. Thanx заранее.

Теги:

3 ответа

1

Используйте метод notifyDataSetChanged() со списком в условии, когда вы удаляете запись, сразу же после удаления записи поместите код listview.notifyDataSetChanged(). надеюсь, что это решит вашу проблему.

  • 0
    я не думаю, что представление списка поддерживает метод notifyDataSetChanged .......
  • 0
    Используйте таким образом: listview.getAdapter ()). NotifyDataSetChanged ();
Показать ещё 3 комментария
0

Моя проблема решена. То, что я должен был сделать, это то, что всякий раз, когда аррайлист перегружался, мне нужно было очистить предыдущий. Как:

массив-list name.clear(); перед добавлением элементов в хэш файл.

0

Вы пробовали invalidateViews, он перерисовывает вид списка.

  • 0
    пытался .. до сих пор не получил желаемый результат
  • 0
    я реализовал это, но все еще безуспешно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню