【发布时间】:2019-04-14 22:58:08
【问题描述】:
我很想改变Recyclerview所选项目的背景(只有一个):
java :
public class HorizontalViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageView img;
private SparseBooleanArray selectedItem = new SparseBooleanArray();
public HorizontalViewHolder(View itemView) {
super(itemView);
img = (ImageView) itemView.findViewById(R.id.img);
itemView.setOnClickListener(this);
}
void onBindView(int position) {
final String s = spacecrafts.get(position);
Glide.with(c).asBitmap().load(s).apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
}).into(img);
}
@Override
public void onClick(View view) {
monRecyclerViewClickListener.onClick(view, spacecrafts.get(getAdapterPosition()));
if (selectedItem.get(getAdapterPosition(), false)) {
selectedItem.clear();
view.setSelected(false);
} else {
selectedItem.put(getAdapterPosition(), true);
view.setSelected(true);
}
// img.setBackgroundDrawable(c.getResources().getDrawable(R.drawable.imagebordertwo));
}
}
XML:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/imagebordertwo" android:state_pressed="false" android:state_selected="true" />
<item android:drawable="@android:color/black" android:state_selected="false" />
</selector>
问题: 当我选择另一个项目时,前一个项目保持选中状态
我想要什么:我想更改只选择一个项目的背景,所以当我决定选择另一个时,前一个应该取消选择。
谢谢你的回答
【问题讨论】:
标签: java android xml android-recyclerview