删除MySQL数据后更新ListView

时间:2012-09-30 17:05:52

标签: android android-listview

以下是我的上下文菜单中的删除调用:

    @Override
    public boolean onContextItemSelected(MenuItem item) {

        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
                .getMenuInfo();
        int clickedPosition = info.position;
        tvInt = reviews.get(clickedPosition);

        switch (item.getItemId()) {
        case R.id.Delete:

            new DeleteCommentTask().execute();

            reviews.remove(clickedPosition);
            adapter.notifyDataSetChanged();

            Toast.makeText(getActivity(), "Review Deleted",
                    Toast.LENGTH_SHORT).show();

            return true;

        }
        return false;

    }

我确实在我的DeleteCommentTask中验证它确实从我的数据库中删除了注释。但ListView没有更新?

更新: 这是我正在使用的适配器:

            MyReviewObject co = new MyReviewObject[reviews.size()];
            int index = 0;

            for (@SuppressWarnings("unused")
            String i : reviews) {
                co[index] = new MyReviewObject(datelist.get(index),
                        reviews.get(index), items.get(index),
                        cats.get(index));
                index++;
            }

            adapter = new MyReviewAdapter(getActivity(), co);
            setListAdapter(adapter);

2 个答案:

答案 0 :(得分:1)

查看更新的答案

不要这样做

reviews.remove(clickedPosition);

只需从数据源中删除评论中的注释即可 适配器的getView。来自Strings的Arraylist。

在此之后,只通知适配器将执行技巧

尝试在DeleteCommentTask的onPostExecute中执行此代码

adapter.notifyDataSetChanged();
Toast.makeText(getActivity(), "Review Deleted", Toast.LENGTH_SHORT).show();

尝试将Argument传递给DeleteCommentTask的Execute方法,该方法将通知要删除的位置。

答案 1 :(得分:0)

这不起作用的原因是:“你需要删除/删除co数组中的项目。这是不可能的/建议的,在Adapter中使用”ArrayList的“MyReviewObject”。 / EM>“

我需要使用ArrayList,它可以动态缩小,而Array则不能。另外,我只是删除了一个字符串ArrayList。我的Array对象内部是多个ArrayList。 所以我应该删除整个对象