0

그래서 질문과 4 가지 옵션을 제시하는 퀴즈 앱이 있습니다. 4 개의 옵션은 RecyclerView에 주어 졌으므로 문자열 (ArrayList)과 올바른 대답 (문자열)을 RecyclerView 어댑터 생성자에 전달합니다. 이제 선택한 대답이 맞으면 itemView이 녹색으로 설정되고 잘못하면 빨간색으로 설정됩니다 (정상적으로 작동하는 경우).Android RecyclerView 어댑터 : 현재 항목보기의 클릭 수신기에서 이미 그려진 항목보기 업데이트

내 문제는 내가 잘못된 답을 누르면

내가 선택한 잘못된 답을 함께 녹색으로하는 정답과 itemview (이미 그린)의 배경색을 설정해야한다는 것입니다 빨간색

@Override 
public void onBindViewHolder(final OptionsAdapter.ViewHolder viewHolder, final int i) { 
    viewHolder.tv_name.setText(option.get(i)); 
    viewHolder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (option.get(i).equals(correct)){ 
       Toast.makeText(context,"CORRECT ANSWER :)",Toast.LENGTH_SHORT).show(); 
       viewHolder.itemView.setBackgroundColor(context.getResources().getColor(R.color.correctAnswer)); 
      } else { 
       Toast.makeText(context,"SORRY INCORRECT ANSWER :(",Toast.LENGTH_SHORT).show(); 
       viewHolder.itemView.setBackgroundColor(context.getResources().getColor(R.color.wrongAnswer)); 
      } 
     } 
    }); 

} 
,369 아래에 내 코드를 참조 전환

위의 내 onBindViewHolder 스 니펫에서 arraylist option에는 4 개의 옵션이 있고 문자열 correct이 정답입니다.

잘못된 대답을 클릭하면 정답을 녹색으로 바꿀 수 있습니까?

private boolean isSelected; 

public boolean isSelected() { 
    return isSelected; 
} 

public void setSelected(boolean selected) { 
    isSelected = selected; 
} 

가 어댑터에이 코드 onClick 추가 : 이미지 아래

잘못 대답은

enter image description here

+1

청취자를 클릭 한 후 arraylist를 업데이트 한 다음 notifyItemChanged (위치)를 호출하십시오. –

+0

목록을 업데이트해야합니다 (옵션). Ronak의 의견을 따르십시오. – ADM

+0

@RonakThakkar 사실상 내 arraylist의 내용을 변경하지 않으므로, 왜 내가 notifyItemChanged (위치)를 호출해야합니까, 당신은 정교하게 주시겠습니까? –

답변

2

는 모델 클래스에이 방법을 추가 클릭하면 스피 기대를 보여줍니다 :

if (mArrayList.get(position).isSelected()) { 
    mArrayList.get(position).setSelected(false); 
} else { 
    mArrayList.get(position).setSelected(true); 
} 
notifyItemChanged(position);