다음은 예상대로 일부 HIDE THE VIEW
가 작동하지ViewHolder는
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// - get element from your dataset at this position
StatusItem item = mDataset.get(position);
//......
//Add content and timing to the textview
String content = item.getContent();
holder.mTextViewTime.setText(timing);
//Set the img
holder.imgViewIcon.setImageDrawable(item.getProfileDrawable());
//Set content image (for Instagram)
holder.mImageViewContentPic.setImageDrawable(item.getContentDrawable());
//HIDE THE VIEW Start
if(item.getContentDrawable() == null){
holder.mImageViewContentPic.setVisibility(View.GONE);
}
//HIDE THE VIEW End
}
(MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
내부) onBindViewHolder
내 코드의 일부입니다 위치합니다. 아래로 스크롤 할 때보기가 정상적으로 작동합니다. 그러나 위로 스크롤하여 이전보기를 다시 방문하면 VISIBLE
인 ImageView는 GONE
이되지만 내 데이터 세트를 확인하고 수정되지 않았 음을 확인합니다. 뷰에서 다른 메서드를 호출하면 잘못된 결과가 나타납니다 (데이터 세트의 위치와 항목이 일치하지 않음).
보기 소유자가 RecyclerView의 특정 위치에 묶여 있지 않은 것 같습니다.
HIDE THE VIEW
부분을 제거하면 코드가 예상대로 작동합니다. 이 문제를 해결하고 내 경우보기를 동적으로 숨길 수있는 방법이 있습니까?
참고 : 일부 AsyncTasks를 사용하여 데이터 집합을 업데이트하고 notifyDataSetChanged()
(관련있는 경우)을 호출합니다.
ViewHolder는 위치와 관련이 없습니다. 즉 100 개의 항목이있는 경우 100 개의 ViewHolders가 없습니다. 위치에 대한 가시성을 대신 변경하려면 어댑터에서 bindView 메소드를 재정의하십시오 (정확한 이름은 기억이 안납니다). – harism
'RecyclerView.Adapter'에서 그런 메소드를 찾을 수 없습니다. – paradite