Android 从服务中删除ListView中的项会导致很多错误
我有个人列表视图,ArrayAdapter可以显示这些人的图像。在每个人的照片下有两个按钮“喜欢”和“不喜欢”。如果我按“喜欢”或“不喜欢”按钮,此项目将随动画从列表中删除:Android 从服务中删除ListView中的项会导致很多错误,android,listview,Android,Listview,我有个人列表视图,ArrayAdapter可以显示这些人的图像。在每个人的照片下有两个按钮“喜欢”和“不喜欢”。如果我按“喜欢”或“不喜欢”按钮,此项目将随动画从列表中删除: protected void removeListItem(View rowView, final int positon) { Animation out = AnimationUtils.makeOutAnimation(getActivity(), true); rowView.startAnimat
protected void removeListItem(View rowView, final int positon) {
Animation out = AnimationUtils.makeOutAnimation(getActivity(), true);
rowView.startAnimation(out);
rowView.setVisibility(View.INVISIBLE);
Handler handle = new Handler();
handle.postDelayed(new Runnable() {
public void run() {
persons.remove(positon);
mMyAnimListAdapter.notifyDataSetChanged();
}
}, 500);
}
还有一些API生成我们可以获取的人员列表。此API对列表进行更改(状态更改为下一个值之一:“无”、“已删除”、“喜欢”、“不喜欢”)。
如果状态更改为“已删除”,我需要将此人从列表中删除并更新ListView。我这样做:
if (changedPerson.getStatus().equals("removed")) {
persons.remove(index);
mMyAnimListAdapter.notifyDataSetChanged();
notifyRemovedStatus(idOfChangedPerson);
}
但当我这样做时,出现了很多错误:
你能帮我一下吗,为什么会出现这种情况以及如何修复它?解决方案很简单,这里的代码没有错误:
if (changedPerson.getStatus().equals("removed")) {
persons.remove(index);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mMyAnimListAdapter.notifyDataSetChanged();
if (persons.size() == 0) {
getActivity().onBackPressed();
}
}});
notifyRemovedStatus(idOfChangedPerson);
}
我违反了这条规则“不要从UI线程外部访问Android UI工具包”
本视频介绍了conceop的工作原理:
这份文件很有用: