, поэтому я пытался создать часть закладки для своего приложения, и я использовал класс модели, который имеет 6 параметров, я создал иконку в строке Recycler View и использовал это для добавления данных на страницу закладок в моем классе адаптера, теперь я хочу, чтобы пользователь мог нажать на значок в другой раз и удалить закладку Item, поэтому я создал метод Update, в котором столбец _KEY_ISBOOKMARK изменится с одного на ноль, но я не могу получить идентификатор Item из своего класса Model и он возвращает 0, я так старался решить эту проблему, но кажется, что это будет не так просто, поэтому, пожалуйста, помогите мне, ребята.
моя модель classs:
public class NewsModel {
private int ID;
private String title;
private String description;
private String image;
private String video;
private String data;
private String setIsBookMarked;
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getVideo() {
return video;
}
public void setVideo(String video) {
this.video = video;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getSetIsBookMarked() {
return setIsBookMarked;
}
public void setSetIsBookMarked(String setIsBookMarked) {
this.setIsBookMarked = setIsBookMarked;
}
}
моя база данных:
Context context;
public static final String DATABASE_NAME="news_data";
public static final String TABLE_NAME="news";
public static final String COL_ID="id";
public static final String COL_TITLE="title";
public static final String COL_DESC="description";
public static final String COL_DATE="date";
public static final String COL_IMAGE="IMAGE";
private static final String Col_KEY_ISBOOKMARK = "mybook";
public static final int VERSION=2;
public static final String QUERY="CREATE TABLE IF NOT EXISTS "+TABLE_NAME+
"("+COL_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "
+COL_TITLE+" TEXT,"
+COL_DESC+" TEXT,"
+COL_IMAGE+" TEXT,"
+COL_DATE+" TEXT,"
+"mybook"+" TEXT) ";
public MyDataBase(@Nullable Context context) {
super(context, DATABASE_NAME, null, VERSION);
this.context=context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(QUERY);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public long addinfotobookmarkpage(String title,String desc,String IMG , String date,String KEY_ISBOOKMARKs ){
ContentValues cv=new ContentValues();
cv.put(COL_TITLE,title);
cv.put(COL_DESC,desc);
cv.put(COL_IMAGE,IMG);
cv.put(COL_DATE,date);
cv.put(Col_KEY_ISBOOKMARK,KEY_ISBOOKMARKs);
SQLiteDatabase db=this.getWritableDatabase();
long result=db.insert(TABLE_NAME,null,cv);
return result;
}
public Cursor getInfos(){
String query="SELECT * FROM "+TABLE_NAME;
SQLiteDatabase db=this.getReadableDatabase();
return db.rawQuery(query,null);
}
public List<NewsModel> getallbookmarks(){
List<NewsModel>newsModels=new ArrayList<>();
String Query="SELECT * FROM "+TABLE_NAME+" WHERE +"+Col_KEY_ISBOOKMARK+" = '1'";
SQLiteDatabase db=this.getWritableDatabase();
Cursor cursor=db.rawQuery(Query,null);
for (cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
NewsModel newsModel=new NewsModel();
newsModel.setID(cursor.getInt(0));
newsModel.setTitle(cursor.getString(1));
newsModel.setDescription(cursor.getString(2));
newsModel.setImage(cursor.getString(3));
newsModel.setData(cursor.getString(4));
newsModel.setSetIsBookMarked(cursor.getString(5));
newsModels.add(newsModel);
}
db.close();
return newsModels;
}
public void updateKey(NewsModel newsModel){
SQLiteDatabase db=this.getWritableDatabase();
db.rawQuery(" UPDATE "+ TABLE_NAME +" SET "+Col_KEY_ISBOOKMARK+" = '0' WHERE "+COL_ID+" = "+newsModel.getID()+";",null);
db.close();
}
мой класс адаптера:
List<NewsModel> newslist;
Context context;
MyDataBase myDataBase;
public NewsAdapter(List<NewsModel> news,Context context) {
this.newslist=news;
this.context=context;
myDataBase=new MyDataBase(context);
}
public class viewholder extends RecyclerView.ViewHolder {
ImageView imgIcon;
TextView txt_date;
TextView txt_titl;
CardView parent;
ImageView img_rownews_bookmark;
ImageView img_rownews_bookmark_disabel;
public viewholder(@NonNull View itemView) {
super(itemView);
txt_titl=itemView.findViewById(R.id.txt_newsrow_title);
txt_date=itemView.findViewById(R.id.txt_newsrow_date);
imgIcon=itemView.findViewById(R.id.img_news_row_icon);
img_rownews_bookmark=itemView.findViewById(R.id.img_rownews_bookmark);
img_rownews_bookmark_disabel=itemView.findViewById(R.id.img_rownews_bookmark_disabel);
img_rownews_bookmark_disabel.setEnabled(false);
parent=itemView.findViewById(R.id.card_newsrow_parent);
}
}
@NonNull
@Override
public NewsAdapter.viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.news_row,parent,false);
return new viewholder(view);
}
@Override
public void onBindViewHolder(@NonNull NewsAdapter.viewholder holder, int position) {
NewsModel news= newslist.get(position);
holder.txt_titl.setText(news.getTitle());
holder.txt_date.setText(news.getData());
Picasso.get().load(news.getImage()).into(holder.imgIcon);
holder.parent.setOnClickListener(v -> {
Intent intent=new Intent(context, DetailActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("newsImage",news.getImage());
intent.putExtra("news_Title",news.getTitle());
intent.putExtra("news_date",news.getData());
intent.putExtra("news_desc",news.getDescription());
context.startActivity(intent);
});
holder.img_rownews_bookmark.setOnClickListener(view -> {
long id=myDataBase.addinfotobookmarkpage(holder.txt_titl.getText().toString(),news.getDescription(),news.getImage(),holder.txt_date.getText().toString(),"1");
Toast.makeText(context, "added to favorite"+String.valueOf(id), Toast.LENGTH_SHORT).show();
holder.img_rownews_bookmark.setVisibility(View.INVISIBLE);
holder.img_rownews_bookmark.setEnabled(false);
holder.img_rownews_bookmark_disabel.setVisibility(View.VISIBLE);
holder.img_rownews_bookmark_disabel.setEnabled(true);
});
holder.img_rownews_bookmark_disabel.setOnClickListener(view -> {
holder.img_rownews_bookmark.setVisibility(View.VISIBLE);
holder.img_rownews_bookmark.setEnabled(true);
holder.img_rownews_bookmark_disabel.setVisibility(View.INVISIBLE);
holder.img_rownews_bookmark_disabel.setEnabled(false);
myDataBase.updateKey(news);
// Toast.makeText(context, "deleted from favorite", Toast.LENGTH_SHORT).show();
});
}
@Override
public int getItemCount() {
return newslist.size();
}
}
ПРИМЕЧАНИЕ: моя база данных только создан для любимых предметов.