의도 된 행동 :ViewHolder 볼 뷰 위치가 아닌 절대 뷰 위치를 등록
안녕하세요 제가 ViewAdapter에 저장된 목록 <>에서로드 이미지의 격자를 표시 할 recyclerView을 사용하고 있습니다. 사용자가 이미지를 클릭하면 새로운 조각이 만들어지고 목록에 해당 항목이 인수로 주어집니다. <>. 이 코드
private class ShowHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
//holder code...
@Override
public void onClick(View view) {
int itemPosition = mRecyclerView.indexOfChild(view);
Fragment newDetail = DetailFragment.newInstance(mShowAdapter.getList().get(itemPosition));
//launch Fragment
}
}
이이 작업을 수행 : 목록 <>에서 전달 될 수있는 항목을 반환 mShowAdapter.getList().get(itemPosition)
. 이보기의 모든 항목에 대해 잘 작동하지만 경우에만 아래로 스크롤하지 마십시오.
버그 : 내가 몇 페이지를 아래로 스크롤하고 내가 항목을 클릭하면
, 잘못된 항목을 목록에서 가져온 것입니다. 예를 들어 몇 페이지를 스크롤 한 후 처음 보이는 항목을 클릭한다고 가정 해 보겠습니다. 목록에서 검색된 항목은 실제로 목록 <>의 첫 번째 항목이며 27 번째 항목은 아닙니다.
이는 recyclerView가 VISIBLE 항목을 기준으로 클릭 위치를 등록하기 때문에 발생합니다. 내가 얼마나 아래로 스크롤해도 상관 없습니다. 세 번째로 보이는 항목을 클릭하면 맨 위에있는 세 번째 절대 항목을 쳤을 때와 같은 결과가됩니다.
어떻게 수정하여 올바른 항목을 검색 할 수 있습니까?
질문을 막 수정하려고했습니다. 'int itemPosition = MyViewHolder.this.getAdapterPosition(); '을 사용하면 문제가 해결됩니다. – fgoogle
@fgoogle 문제가 해결 되었습니까? –
네, 알다시피 나는 당신의 대답을 받아 들였습니다. – fgoogle