Android ExpandableListActivity Изменение представления во время выполнения - PullRequest
2 голосов
/ 08 сентября 2011

Я использую ExpandableListActivity Я использую

SimpleExpandableListAdapter(Context context, List<? extends Map<String, ?>> groupData, int groupLayout, String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>> childData, int childLayout, String[] childFrom, int[] childTo);

для своей деятельности.Здесь я создал контекстное меню.Используя контекстное меню, я удаляю значение из базы данных, а также формирую ArrayList из Child Group.У меня проблема в том, что я хочу обновить свою ChildView Расширяемую активность списка сразу после удаления значений из DataBase и ArrayList.. Я попытался использовать notifyDataSetChanged().Это не работает, потому что я не удаляю значение из самого ExpandableListAdapter.Я также попытался снова вызвать Adapter после удаления значений, но он дает два списка.

// here on select ContextMenu
@Override
    public boolean onContextItemSelected(MenuItem item) {

        ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item
                .getMenuInfo();
// Getting positions of Group and child from Expandable ListView
        int groupPos = 0, childPos = 0;
        int type = ExpandableListView
                .getPackedPositionType(info.packedPosition);
        if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
            groupPos = ExpandableListView
                    .getPackedPositionGroup(info.packedPosition);
            childPos = ExpandableListView
                    .getPackedPositionChild(info.packedPosition);
        }

        db.openConnection(this);

        View v = info.targetView;
        TextView tv = (TextView) v.findViewById(R.id.grp_child);
        String string = (String) tv.getText();
// Here I delete the value from DataBase onClik of Context Menu.
        if (item.getItemId() == 0) {
            final String where = "title=?";
            final String[] args = new String[] { string };
            database.delete(tableData, where, args);
        }
// Here I delete the value from ArrayList onClik of Context Menu.
//result1 is ArrayList<ArrayList<HashMap<String,String>>>();
        result1.get(groupPos).get(childPos);
        result1.remove(result1.get(groupPos).get(childPos));
        Log.e("Search", "is" + result1.get(groupPos).get(childPos));

        /*expListAdapter.notifyDataSetChanged();*/
        db.closeConnection();
        return super.onContextItemSelected(item);
// when i delete form both arraylist and database i want to update //ListView immidiately.
    }

Любая помощь будет оценена.

Заранее спасибо ..

Махавир

...