我使用滑动来删除RecyclerView内部的对象。因此,如果我向右滑动,则在滑动后首先从RecyclerView中将其删除,用户必须按我的垃圾桶将其完全删除(也从数据库中删除)。如果只删除1,一切正常,但是如果我刷更多对象,一切都照常从屏幕上消失了,但是我的数据库只是删除了最后一个。我要删除所有刷卡的对象。
我已经搜索了其他答案,但是我只能找到全部或单个删除。我想我必须按住我的对象,然后在按下垃圾桶时立即删除所有对象。只是想不通。
private void deletePerson(final oPerson person) {
oPersonList.remove(person);
personsAdapter.notifyDataSetChanged();
Toast toast = Toast.makeText(getApplicationContext(), "Press the
trashcan for confirm.", Toast.LENGTH_LONG);
toast.show();
//DELETE A PERSON FOREVER DATABSE
deletePersonIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
plannerRepository.deletePerson(person);
Toast toast = Toast.makeText(getApplicationContext(),
"Deleted.", Toast.LENGTH_LONG);
toast.show();
}
});
}
所以我希望第一部分是相同的,oPersonList.remove();工作完美。仅第二部分(在“删除人员”之后)出了问题。它会删除最后一个刷过的对象,并且需要删除所有刷过的对象。
答案 0 :(得分:1)
所以您必须创建类似这样的东西
private List itemsToDelete = new ArrayList<oPerson>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
//DELETE A PERSON FOREVER DATABSE
deletePersonIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int i = 0; i < itemsToDelete.size(); ++i){
oPerson personToDelete = itemsToDelete.get(i);
plannerRepository.deletePerson(personToDelete);
}
itemsToDelete.clear();
}
});
}
private void deletePerson(final oPerson person) {
itemsToDelete.add(person)
oPersonList.remove(person);
personsAdapter.notifyDataSetChanged();
Toast toast = Toast.makeText(getApplicationContext(), "Press the trashcan for confirm.", Toast.LENGTH_LONG);
toast.show();
}
如您所见,点击侦听器仅应添加一次,接下来我们只需itemsToDelete
进行迭代即可存储已换出的项目。接下来,该列表将被清除。