Я написал этот код для удаления строки из одной из таблиц в моей базе данных SQLite, которая имеет составной первичный ключ. У меня есть кнопка с изображением в RecyclerView, после нажатия которой нужно выполнить это действие. Но этот код не работает для меня.
Это мой класс адаптера:
public class adapter_cgpa extends RecyclerView.Adapter<adapter_cgpa.Viewholder> {
ArrayList<POJO> cgpaArrayList;
public adapter_cgpa(ArrayList<POJO> cgpaArrayList) {
this.cgpaArrayList = cgpaArrayList;
}
@NonNull
@Override
public adapter_cgpa.Viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View listitem = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_cgpa, parent, false);
return new Viewholder(listitem);
}
@Override
public void onBindViewHolder(@NonNull adapter_cgpa.Viewholder holder, int position) {
POJO cgpa= cgpaArrayList.get(position);
holder.cname.setText(cgpa.getCname());
holder.no_of_sems.setText(cgpa.getNo_of_sems());
holder.cgpa.setText(cgpa.getCgpa());
holder.percentage.setText(cgpa.getPercentage());
holder.schemec.setText(cgpa.getSchemec());
}
@Override
public int getItemCount() {
return cgpaArrayList.size();
}
public class Viewholder extends RecyclerView.ViewHolder {
TextView cname, no_of_sems, cgpa, percentage,schemec;
ImageButton btndelete2;
public Viewholder(@NonNull View itemView) {
super(itemView);
cname=(TextView)itemView.findViewById(R.id.name);
no_of_sems=(TextView)itemView.findViewById(R.id.no_of_sem);
cgpa=(TextView)itemView.findViewById(R.id.textView49);
percentage=(TextView)itemView.findViewById(R.id.textView55);
schemec=(TextView)itemView.findViewById(R.id.scheme2);
btndelete2=(ImageButton)itemView.findViewById(R.id.btndelete2);
final String snc = (String) cname.getText();
final String semrc = (String) no_of_sems.getText();
final String schc = (String) schemec.getText();
btndelete2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbmanager db= new dbmanager(v.getContext());
db.delete2(snc,semrc,schc);
}
});
}
}
}
Это мой класс dbmanager:
public class dbmanager extends SQLiteOpenHelper {
String sgpa_table="create table Sgpa (sname text, semester text, sgpa text,percent text, schemes text, primary key(sname,semester,schemes))";
String cgpa_table="create table Cgpa (cname text, no_of_sems int, cgpa text, percentage text, schemec text, primary key(cname,no_of_sems,schemec))";
public dbmanager(@Nullable Context context) {
super(context, "Student", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sgpa_table);
db.execSQL(cgpa_table);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public Cursor fetch_data1() {
SQLiteDatabase db = this.getWritableDatabase();
String query = "Select*FROM Sgpa" ;
Cursor cursor = db.rawQuery(query,null);
return cursor;
}
public Cursor fetch_data2() {
SQLiteDatabase db = this.getWritableDatabase();
String query = "Select*FROM Cgpa" ;
Cursor cursor = db.rawQuery(query,null);
// if (cursor != null) {
// cursor.moveToFirst();
// }
return cursor;
}
public Cursor delete2(String snc, String semrc, String schc){
SQLiteDatabase db=this.getWritableDatabase();
String query= "delete from Cgpa where (cname= ? and no_of_sems = ? and schemec = ?)";
Cursor cursor = db.rawQuery(query, new String[]{snc,semrc,schc});
return cursor;
}
}