Android之RecyclerView的item点击变色,再次点击取消变色
程序员文章站
2022-05-12 09:18:14
...
如题,点击item,item变色,并在item的上显示一个勾,再次点击item,item恢复原来的颜色,并且勾去掉。其实逻辑挺简单的,但当时想了很久,就记录下来了,毕竟小白一个。布局什么的就 不写了,很简单,主要是adapter的部分如下所示,其中List<Boolean> mAudioFileSelectedList初始值均为false。
class AudioFileAdapter extends RecyclerView.Adapter<AudioFileAdapter.ViewHolder> {
private List<AudioFileContent> mAudioFileContentList;
private List<Boolean> mAudioFileSelectedList;
private int selectedAudioFilePosition;
AudioFileAdapter(List<AudioFileContent> audioFileContents, List<Boolean> audioFileSelectedList, int selectionPosition) {
mAudioFileContentList = audioFileContents;
mAudioFileSelectedList = audioFileSelectedList;
selectedAudioFilePosition = selectionPosition;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_audio_file_item, parent, false);
final ViewHolder holder = new ViewHolder(view);
holder.mAudioFileItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectedAudioFilePosition = holder.getAdapterPosition();
for(int i = 0; i < mAudioFileSelectedList.size(); i++) {
if (i == selectedAudioFilePosition) {
if(mAudioFileSelectedList.get(selectedAudioFilePosition)) {
mAudioFileSelectedList.set(selectedAudioFilePosition, false);
}else {
mAudioFileSelectedList.set(selectedAudioFilePosition, true);
}
}else {
mAudioFileSelectedList.set(i, false);
}
}
notifyDataSetChanged();
}
});
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
AudioFileContent audioFileContent = mAudioFileContentList.get(position);
holder.mAudioFileItemName.setText(audioFileContent.getAudioName());
if (selectedAudioFilePosition == position) {
if (mAudioFileSelectedList.get(position)) {
holder.mAudioFileItemSelection.setVisibility(View.VISIBLE);
holder.mAudioFileItemLayout.setBackgroundColor(Color.parseColor("#E5F4FF"));
} else {
holder.mAudioFileItemSelection.setVisibility(View.GONE);
holder.mAudioFileItemLayout.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
} else {
holder.mAudioFileItemSelection.setVisibility(View.GONE);
holder.mAudioFileItemLayout.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
@Override
public int getItemCount() {
return mAudioFileContentList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.audio_file_item_layout)
LinearLayout mAudioFileItemLayout;
@BindView(R.id.audio_file_item)
RelativeLayout mAudioFileItem;
@BindView(R.id.audio_file_item_name)
TextView mAudioFileItemName;
@BindView(R.id.audio_file_item_selection)
ImageView mAudioFileItemSelection;
ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}
上一篇: iOS 调节系统音量