我目前使用RecyclerView
,但我无法解决问题;
如果用户选择了答案,请回答textview
更改颜色和背景。
如果用户选择了不同的答案,请先回答旧的textview
颜色和背景。
代码;
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
_mContext = holder._mAnswersContainer.getContext();
_mPosition = position;
holder._mImageAnswer.setImageDrawable(Utils.stringToResource(_mContext,
_mAnswerList.get(_mPosition).mAnswerImage));
holder._mImageTextAnswer.setText(_mAnswerList.get(_mPosition).mAnswerText);
holder._mAnswersContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder._mImageTextAnswer.setTextColor(_mContext.getResources()
.getColor(R.color.white));
holder._mImageTextAnswer.setBackgroundColor(_mContext.getResources()
.getColor(R.color.red));
Log.d(TAG, "Values : " + QuestionsHelper.getInstance(_mContext)
.getValues(_mAnswerList.get(_mPosition).mAnswerText));
}
});
}
答案 0 :(得分:1)
在适配器内部,创建一个成员变量以跟踪选择的位置:
private int mSelected = -1;
在onBindViewHolder
内(虽然它也可以在onCreateViewHolder
内部使用):
int color;
if(position == mSelected){
color = ContextCompat.getColor(context, R.color.selectedColor);
}else{
color = ContextCompat.getColor(context, R.color.regularColor);
}
// Set the color
viewHolder.yourView.setBackgroundColor(color);
为RecyclerView适配器创建一些辅助函数来处理选择:
public void selectPosition(int selected){
mSelected = selected;
notifyDataSetChanged();
}
public void resetSelected(){
mSelected = -1;
notifyDataSetChanged();
}
只要您想要设置所选项目,只需拨打adapter.selectPosition()
即可。并使用adapter.resetSelected()