我创建了回收站视图,并为它添加了许多元素,例如文本视图和图像视图,问题是当用户在任一位置按书签以将选定的项目标记为好时,但是我发现有另一个项目自动添加了书签是什么问题。
这是一个代码
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
答案 0 :(得分:0)
这是解决问题的方法
您需要向Get_Set_Note
添加一个布尔属性isFavorite
赞
Get_Set_Note.java
Boolean isFavorite = false
只需在您的适配器中根据这种情况设置星像
if(movie.isFavorite){
holder.imageView.setImageResource(R.drawable.btn_star_big_on);
}else{
holder.imageView.setImageResource(R.drawable.btn_star_big_off);
}
在Click侦听器上,您可以设置boolean属性并通知适配器
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
if(movie.isFavorite){
movie.isFavorite = false
}else{
movie.isFavorite = true
}
notifyDataSetChanged()
}
});
然后您的bindViewHolder
会像这样
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()
}
});
}