RecyclerView select 多项目当用户 select 单项目
RecyclerView select multi item when user select single item
我创建了回收站视图并为其添加了许多元素,如文本视图和图像视图问题是当用户按下任何一个位置为其添加书签时选择的项目很好但是我发现有另一个项目自动添加了书签什么问题。
这是一个代码
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
这是解决问题的方法
您需要向 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 侦听器上,您可以设置布尔值 属性 并通知适配器
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()
}
});
}
我创建了回收站视图并为其添加了许多元素,如文本视图和图像视图问题是当用户按下任何一个位置为其添加书签时选择的项目很好但是我发现有另一个项目自动添加了书签什么问题。
这是一个代码
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
这是解决问题的方法
您需要向 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 侦听器上,您可以设置布尔值 属性 并通知适配器
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()
}
});
}