0

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

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

2 回答 2

1

查看更新的答案

不要这样做

评论.remove(clickedPosition);

只需从适配器的 getView 中使用它的数据源中删除注释即可。从字符串的 Arraylist 中说。

在此之后,只有通知适配器才能解决问题

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

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

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

于 2012-09-30T17:12:56.187 回答
0

这不起作用的原因是因为:“您需要删除/删除 co 数组中的项目。这是不可能的/推荐的,ArrayList在适配器中使用“MyReviewObject”。

我需要使用ArrayList可以动态收缩的 Array 不能。另外,我只是删除了一个 String ArrayList。我的Array对象内部有多个 ArrayList。 所以我应该删除整个对象

于 2012-10-09T16:57:12.133 回答