2014-09-30 2 views
1

listviews에서 뷰어 홀더가있는 인플레이터 문제가 있습니다. 뷰어 홀더를 구현하면 잘못된 인플레이터가 발생하여 메시지가 잘못 표시됩니다. (이미지 10에서 메시지는 나로부터 스크롤을 할 때마다 잘못된 메시지가 바뀌고, 그렇지 않으면 풍선이 무작위로 인 것처럼 다른 메시지가 바뀝니다.)ViewHolder on multiple inflater

나는 2 개의 다른 인플레이터를 가지고 있는데 그것들은 profileImage 그리고 나를 위해 하나.

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder viewHolder; 
     if (convertView == null) { 


     if(messageList.get(position).getSenderRealId() != relevantId) 
     { 
      convertView = getLayoutInflater().inflate(R.layout.message_detail_row_my_inflater, parent, false); 
     }else{ 
      convertView = getLayoutInflater().inflate(R.layout.message_detail_row_their_inflater, parent, false); 
     } 

     viewHolder = new ViewHolder(); 
     viewHolder.messageDateText = (CustomFontTextView) findViewById(R.id.messageDateText); 
     viewHolder.profileImageView = (SquareImageView) findViewById(R.id.profileImageView); 
     viewHolder.messageBubbleLayout = (LinearLayout) convertView.findViewById(R.id.messageBubbleLayout); 
     viewHolder.messageText = (CustomFontTextView) viewHolder.messageBubbleLayout.findViewById(R.id.message_text); 
     viewHolder.messageHourText = (CustomFontTextView) viewHolder.messageBubbleLayout.findViewById(R.id.messageHourText); 

     convertView.setTag(viewHolder); 
     }else{ 
      viewHolder = (ViewHolder)convertView.getTag(); 
     } 

     viewHolder.messageText.setText(messageList.get(position).getMessage()); 
     viewHolder.messageHourText.setText(Constants.hourFormat.format(messageList.get(position).getSendTime())); 



     return convertView; 

    } 

그리고 viewHolderClass : 여기

는 코드 현재, 난 단지 messageHour 및 보낼 메세지 설정

static class ViewHolder { 
    CustomFontTextView messageDateText; 
    SquareImageView profileImageView; 
    LinearLayout messageBubbleLayout; 
    CustomFontTextView messageText; 
    CustomFontTextView messageHourText; 

} 

하지만 이미지를 제외한 모든 구성 요소는 내가 생각 해달라고의 LinearLayout (messageBubbleLayout) 내부에 문제가 발생합니다. 당신의 도움이

enter image description here

답변

0

여기에 두 개의 서로 다른 레이아웃을 사용하고 있기 때문에, 제대로 convertviews를 재사용 안드로이드의 메커니즘을 사용해야에 대한

감사합니다.

체크 아웃 여기에 튜토리얼 : "내"와 "그들의"때문에 2를 반환 getViewTypeCount() 메소드를 오버라이드 (override), 및 getItemViewType()에 : 귀하의 경우

http://antoine-merle.com/blog/2013/06/11/making-a-multiple-view-type-adapter-with-annotations/

, 당신은보기의 두 유형이 위치에 따라 적절한 유형을 반환하십시오.

+0

감사합니다. getView()가 호출 될 때마다 recrating 이후로 나는 그것을 놓쳤습니다. – Warwicky