以下是我的上下文菜单中的删除调用:
@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);
答案 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。 所以我应该删除整个对象。