ID продолжает возвращать 0 в классе Model в java - PullRequest
0 голосов
/ 04 апреля 2020

, поэтому я пытался создать часть закладки для своего приложения, и я использовал класс модели, который имеет 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();
    }


}

ПРИМЕЧАНИЕ: моя база данных только создан для любимых предметов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...