홈>
viewHolder.optiontxt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewHolder.optiontxt1.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0);
Log.e("position", "onClick: " + i);
}
});
이것은 내가하려는 일입니다. 실제로, recyclerView에서 스크린에 표시 할 데이터를 보여주는 6 개의 배열이 있습니다. 첫 번째 배열은 질문 번호이며 다른 배열은 4 개의 옵션입니다. 하지만 문제는 첫 번째 질문 중 하나를 선택하면 8 개의 질문 중 하나가 자동으로 선택됩니다.
- 답변 # 1
- 답변 # 2
Recyclerview는 항목보기를 재활용합니다. 귀하의 경우 recyclerview는 8 번째 질문의 첫 번째 질문보기를 재사용하고 있습니다. 질문이 될 수 있습니다. onBindViewHolder의 업데이트 된 컨텐츠로 각 itemview를 업데이트해야합니다. 당신이 할 수있는 일은 답변을 위해 배열을 유지하는 것입니다. 사용자가 옵션을 클릭하면 응답 배열을 업데이트하고 해당 위치에 대해 알림을 변경했습니다. onBindViewHolder에서 응답 배열을 확인하여 옵션을 선택/선택 취소하십시오. 다음은 코드 스 니펫입니다.
recyclerview
int[] answers = new int[getItemCount()]; @Override public void onBindViewHolder(ViewHolder viewHolder, int position) { /* check/uncheck options by checking the answer array */ if(answers[position] == 1) viewHolder.optiontxt1.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0); else viewHolder.optiontxt1.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0); if(answers[position] == 2) viewHolder.optiontxt2.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0); else viewHolder.optiontxt2.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0); if(answers[position] == 3) viewHolder.optiontxt3.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0); else viewHolder.optiontxt3.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0); if(answers[position] == 4) viewHolder.optiontxt4.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0); else viewHolder.optiontxt4.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0); viewHolder.optiontxt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { answers[position] = 1; notifyItemChanged(position); } });
관련 질문
- java : Recyclerview의 Exoplayer는 인스 타 그램과 같은 이미지와 비디오를 사용하지만 Android에서 백 프레스 된 후에도 재생중인 마지막 비디오 만 중지합니다.
- java : RecyclerView 이미지 클릭
- java : RecyclerViewAdapter의 Setter가 작동하지 않습니까?
- Recycler View Android에 Admob 네이티브 고급 광고를 배치하는 방법은 무엇입니까?
- java : 오류 : minSdkVersion을 변경할 때 빌드 파일에 대한 빌드 스크립트 클래스 캐시를 잠그기 위해 대기하는 시간이 초과되었습니다.
- java : Document Uri에서 자녀의 DocumentFile을 가져 오는 방법
- java : 어댑터 클래스의 code를 가진 항목에서 삭제 버튼을 클릭하여 목록보기에서 항목을 제거한 후 조각을 다시로드하는 방법은 무엇입니까?
- java : ComponentInfo 활동을 시작할 수 없습니다. 이진 XML 파일 행
- java : Android에서 자리 표시 자와 함께 형식이 지정된 문자열을 사용하는 방법은 무엇입니까?
- java : 호환되지 않는 유형 : DetailOneFragment를 Fragment로 변환 할 수 없습니다.
와이즈 비즈
recyclerview
에서보기를 재활용 그래서OnBindViewHolder
때 클릭하면 다른items
에 반영됩니다. .positions
의 선택 상태에 대한 더 나은 이해를 위해 이 예를 참조하십시오도움이 되길 바랍니다.