모든 목록 항목에 ImageButton이있는 RecyclerView가 있습니다.이 이미지는 어댑터의 onBindViewHolder ()에서 정의합니다.
int myVote = getMyVote();
if (myVote != 0) {
Log.d("dbg", myVote + "");
holder.ratingButton.setImageResource(R.drawable.ic_star_grey600_36dp);
}
따라서 ratingButton은 목록 항목 레이아웃의 오른쪽 하단 모서리에있는 별표입니다. 조건 (myVote! = 0)이 충족되면 모양이 회색으로 채워집니다 (따라서 로그 레코드가 푸시됩니다).
문제는 목록을 아래로 스크롤하면 로그 창에서 (올바른 목록 항목에 대해) 하나의 레코드 만 볼 수 있지만 다른 별이 채워지는 것을 볼 수 있다는 것입니다. 또한 버튼이 잘못 변경된이 목록 항목은 5 행마다 반복되므로 혼란 스럽습니다. 내가 변하면
mListView.setItemViewCacheSize (0);반복 기간이 3으로 변경되므로 RecyclerView의 캐싱 및 재활용 메커니즘과 연결되어 있다고 가정 할 수 있습니다.
문제를 해결하도록 도와주세요. 감사!
코드를 다음과 같이 변경하십시오.
if (myVote != 0) {
Log.d("dbg", myVote + "");
holder.ratingButton.setImageResource(R.drawable.ic_star_grey600_36dp);
} else {
holder.ratingButton.setImageResource(int another resource);
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다