java - 我想从 Realm 数据库中删除数据,但它给了我错误
问题描述
我想从 Realm 数据库和cardview recyclerview 中删除特定记录,当我单击(ADAPTER CLASS)中的删除按钮时,它给了我错误,我不知道如何解决它。我希望当我单击删除按钮时,数据也已从领域数据库和 recyclerview(cardview) 中删除,但我没有成功。
我是领域数据库的新手。
RealmHelper 类:
package com.deitel.realmrecyclerviewspinnerpriority.Database;
import android.content.Context;
import android.view.Display;
import android.widget.Toast;
import com.deitel.realmrecyclerviewspinnerpriority.Modelclass.ModelClass;
import java.util.ArrayList;
import io.realm.Realm;
import io.realm.RealmList;
import io.realm.RealmQuery;
import io.realm.RealmResults;
public class RelmHelper {
Realm realm;
Context context;
public RelmHelper(Realm realm, Context context) {
this.realm = realm;
this.context=context;
}
public void savedata(final ModelClass modelClass) {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
ModelClass md = realm.copyToRealm(modelClass);
}
});
}
public ArrayList<ModelClass> retrievedata() {
ArrayList<ModelClass> modelclassdata = new ArrayList<>();
RealmResults<ModelClass> modelClass = realm.where(ModelClass.class).findAll();
for (ModelClass MD : modelClass) {
modelclassdata.add(MD);
}
return modelclassdata;
}
public void deletedata(final int id)
{
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
ModelClass modelClass=realm.where(ModelClass.class).equalTo("id",id).findFirst();
if (modelClass!=null)
{
modelClass.deleteFromRealm();
}
realm.close();
}
});
}
}
适配器类:
package com.deitel.realmrecyclerviewspinnerpriority.Adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.deitel.realmrecyclerviewspinnerpriority.Database.RelmHelper;
import com.deitel.realmrecyclerviewspinnerpriority.Modelclass.ModelClass;
import com.deitel.realmrecyclerviewspinnerpriority.R;
import java.util.ArrayList;
import io.realm.Realm;
public class AdapterClass extends RecyclerView.Adapter<AdapterClass.Viewholder> {
Realm realm;
RelmHelper relmHelper;
ArrayList<ModelClass> modelClassList;
Context context;
public AdapterClass(@NonNull Context context, ArrayList<ModelClass> modelClassList) {
this.modelClassList = modelClassList;
this.context = context;
relmHelper=new RelmHelper(realm, context);
}
@NonNull
@Override
public AdapterClass.Viewholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.custom_cardview_layout, viewGroup, false);
Viewholder holder = new Viewholder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull AdapterClass.Viewholder holder, final int position) {
holder.textView_name.setText("Name :" + modelClassList.get(position).getName());
holder.textView_details.setText("Details : " + modelClassList.get(position).getDetails());
holder.textView_priority.setText("Priority : " + modelClassList.get(position).getPriority());
holder.btn_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
relmHelper.deletedata(modelClassList.get(position).getId());
modelClassList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, modelClassList.size());
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return modelClassList.size();
}
public class Viewholder extends RecyclerView.ViewHolder {
TextView textView_name;
TextView textView_details;
TextView textView_priority;
ImageButton btn_delete;
public Viewholder(@NonNull View view) {
super(view);
textView_name = view.findViewById(R.id.textview_name);
textView_details = view.findViewById(R.id.textview_details);
textView_priority = view.findViewById(R.id.textview_priotity);
btn_delete = view.findViewById(R.id.btn_delete);
}
}
}
解决方案
你还没有realm
在里面AdapterClass
初始化来初始化RelmHelper
。试试下面:
realm = Realm.getInstance(context); // Also can use Realm.getDefaultInstance();
relmHelper=new RelmHelper(realm, context);
推荐阅读
- javascript - React Native WebP 格式图像有时会消失
- c# - 如何根据其版本订购这些字符串列表
- reactjs - Cloud Firestore 集合未显示在 Cloud Firestore 的数据库中
- kubernetes - 在 vm 中运行容器是否超出了它们的目的?
- reactjs - 如何转换输入值?
- for-loop - 嵌套for循环算法简单问题(迷宫打印机)
- spring-boot - 为什么以下文件生成方法在同时向此端点请求时返回 FileNotFoundException?
- php - 返回重定向()->动作('BookingController@index')laravel 8
- google-sheets - 谷歌表格 - 我似乎无法使同一时间的拖车单元实际上彼此相等
- flutter - 颤振拉动以滚动到位置刷新