简体   繁体   English

在使用Room从ChildActivity中单击按钮后,如何从数据库中的MainActivity中加载的RecyclerView中删除对象列表

[英]How do I delete a list of objects from RecyclerView loaded in MainActivity from database upon button click from ChildActivity using Room

I have a RecyclerView in MainActivity that loads saved data from database using Android Architecture Components ( Room ), this data is then passed to ChildActivity via intent as a parcellable bundle. 我在MainActivity中有一个RecyclerView ,它使用Android Architecture ComponentsRoom )从数据库加载保存的数据,然后将该数据作为一个可拆分的捆绑包通过intent传递给ChildActivity。 I wish to be able to delete this data upon button click from ChildActivity: the issue I have now is to get the RecyclerView holder position in order to delete this particular part of the RecyclerView data. 我希望能够在从ChildActivity中单击按钮后删除此数据:我现在遇到的问题是获得RecyclerView持有人的位置,以便删除RecyclerView数据的这一特定部分。 I am aware this is easier by swipe to delete from MainActivity, but I don't want to do that since I will be deleting from ChildActivity upon button click from the context. 我知道通过滑动从MainActivity中删除会更容易,但是我不想这样做,因为从上下文中单击按钮后我将从ChildActivity中删除。 I have come up with the below method, but it's not just working; 我想出了下面的方法,但它不仅起作用,还可以。

public void deleteMovie( RecyclerView.ViewHolder viewHolder){ 
    int position = viewHolder.getAdapterPosition();
    List<DataObject> movie = mAdapter.getMovieList();
    mDb.dataDao().deleteData(movie.get(position);
}

I don't know where to go from here. 我不知道从这里去哪里。 This method works well for overriden onSwipe method of itemTouchHelper class, but this is not my intention. 此方法适用于itemTouchHelper类的onSwipe方法的重写,但这不是我的意图。 Kindly help bail me out. 请帮助我。

After deleting the data refresh your adapter 删除数据后,刷新适配器

 public void deleteMovie( RecyclerView.ViewHolder viewHolder){
        int position = viewHolder.getAdapterPosition();
        List<DataObject> movie = mAdapter.getMovieList();
        mDb.dataDao().deleteData(movie.get(position);
        mAdapter.notifydatasetchanged()
    }

I guess this data which is passed to ChildActivity contains the ID of the record in the Database's table? 我猜这些传递给ChildActivity数据包含数据库表中记录的ID So, you can delete this record by ID or what you use for @PrimaryKey 因此,您可以按ID@PrimaryKey内容删除此记录。

If this suggestion not helps, please provide more code for better understanding 如果此建议没有帮助,请提供更多代码以更好地理解

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从房间数据库和 RecyclerView 中删除项目并更新列表 - How to delete an item from Room Database and RecyclerView and updating the list 如何从房间数据库中删除对象/实体列表? - How to delete a List of Objects/Entities from room database? 从childActivity返回后,Mainactivity重新启动 - Mainactivity restarts after returning from childActivity 如何使用房间从 recyclerview 中删除一行? - How do I remove a row from recyclerview using room? 如何从会议室数据库中的表中删除列? - How do I delete column from table in room database? 如何从MainActivity更改RecyclerView中的视图 - How do I change a View in a RecyclerView from MainActivity 当我单击一个按钮时,如何从 MainActivity 打开一个包含在 viewpager 中的特定片段页面 - How do i open a particular fragement page enshrined in viewpager from MainActivity when i click a button 如何在单击按钮时从“领域数据库”中删除数据? - How I delete data from 'Realm Database' on button click? Xamarin Android:如何在 ai 单击 recyclerview 项目时从主要活动中隐藏项目 - Xamarin Android: How to hide a item from mainactivity when a i click on recyclerview item 如何撤消从Room数据库中删除 - How to undo delete from Room database
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM