2014-09-30 37 views
1

我在瀏覽器上看到了一個與瀏覽器有關的問題。隨着Viewholder的實現,它得到錯誤的inflater,所以消息顯示錯誤。 (在圖像10.消息不是從我而且錯誤的消息更改,只要我滾動,我成爲7,4或任何其他,如果它隨機需要inflater)ViewHolder on multiple inflater

我有2個不同的inflater,一個爲他們顯示他們的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:

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

} 

目前,我只設置messageHour和MessageText中,但除了像所有組件都是一個的LinearLayout(messageBubbleLayout),我不認爲內導致問題。

感謝您的幫助

enter image description here

回答

0

由於您使用兩種不同的佈局,在這裏,你應該使用Android的機制正常重用convertviews。

退房的教程在這裏:

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

你的情況,你只有兩種看法:「我」和「他們」,所以覆蓋getViewTypeCount()方法返回2,getItemViewType()到根據位置返回適當的類型。

+0

謝謝,我錯過了,因爲我每次調用getView()時都會回顧。 – Warwicky 2014-09-30 15:41:27

相關問題