-2

I create recycler view and inflate it many elements like text view and image view the problem is when user press on any one position to bookmark it the item selected good but I found that there another item bookmarked automatic what the problem.

Here is a code

public void onBindViewHolder(final ViewHolder holder, int position) {
  Get_Set_Note movie=moviesList.get(position); 
  holder.title.setText(movie.getTitle()); 
  holder.time.setText(movie.getTime());

  holder.imageView.setOnClickListener(new View.OnClickListener() { 
       @Override public void onClick(View v) { 

       holder.imageView.setImageResource(R.drawable.btn_star_big_on); 
     }
  });
}

https://drive.google.com/file/d/1bg2T3krPedlC6ue_sldk4X8zyW675EzV/view?usp=drivesdk

Arbaz Pirwani
  • 935
  • 7
  • 22
Applicant
  • 3
  • 2
  • 1
    Create an on-site [mcve] - don't use external services to show the code. – Zoe May 10 '19 at 14:49
  • have you created ? boolean value in your data model ? which you are using for fill and in fill star ? – Arbaz Pirwani May 10 '19 at 14:57
  • public void onBindViewHolder(final ViewHolder holder, int position) { Get_Set_Note movie=moviesList.get(position); holder.title.setText(movie.getTitle()); holder.time.setText(movie.getTime()); holder.imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { holder.imageView.setImageResource(R.drawable.btn_star_big_on); } }); – Applicant May 10 '19 at 15:00
  • Upper code when click any recycler view item to bookmarked it.but it bookmark multi item. – Applicant May 10 '19 at 15:02
  • Please [edit] your question to provide a [mcve] that demonstrates the issue. – Mike M. May 10 '19 at 15:03
  • Im sorry mister Mike M. Im new with overflow stack and not complete with its rules. – Applicant May 10 '19 at 20:12

1 Answers1

0

Here is how you can solve it

You need to add to your Get_Set_Note one boolean property isFavorite

Like this

Get_Set_Note.java

Boolean isFavorite = false

And simply in your adapter set your star image base on this condition

if(movie.isFavorite){
   holder.imageView.setImageResource(R.drawable.btn_star_big_on); 
 }else{
  holder.imageView.setImageResource(R.drawable.btn_star_big_off); 
}

And on Click listener you can set you boolean property and notify the adapter

holder.imageView.setOnClickListener(new View.OnClickListener() { 
       @Override public void onClick(View v) {
         if(movie.isFavorite){ 
              movie.isFavorite = false
         }else{
             movie.isFavorite = true  
         }
          notifyDataSetChanged()
     }
});

And then finally your bindViewHolder would be like this

public void onBindViewHolder(final ViewHolder holder, int position) {
  Get_Set_Note movie=moviesList.get(position); 
  holder.title.setText(movie.getTitle()); 
  holder.time.setText(movie.getTime());

  if(movie.isFavorite){
    holder.imageView.setImageResource(R.drawable.btn_star_big_on); 
  }else{
    holder.imageView.setImageResource(R.drawable.btn_star_big_off); 
  }

  holder.imageView.setOnClickListener(new View.OnClickListener() { 
       @Override public void onClick(View v) {
         if(movie.isFavorite){ 
              movie.isFavorite = false
         }else{
             movie.isFavorite = true  
         }
          notifyDataSetChanged()
     }
  });
}
Arbaz Pirwani
  • 935
  • 7
  • 22