2013-03-15 80 views
1

我已經搜遍了SO,發現了4個類似的問題,但似乎這個問題是不同的種類。我也花了大約7個小時來解決這個單一的錯誤,並沒有發現我做錯了什麼。Listview在第一行顯示錯誤的圖像

問題:
中的每一行ListView控件包含兩個圖像。當我啓動活動時,第一行中的一個或兩個imageView顯示錯誤的圖像,並且這僅在發生後有時發生。有時候,該行在啓動後顯示正確的圖像。

當我向下滾動隱藏第一行,然後再次向上滾動時,圖像將更改爲正確的圖像。

受審SOLUTION:
我只找到一個解決方案,是設置convertView = NULL在getView方法的開始。是的,這是有效的,imageView正確顯示,但導致其他問題和錯誤。滾動變得不平滑,有時一些圖像變得太小而不適應它。

注:
有數據,數據獲取正確的每行沒問題,以後我運行調試。

我的代碼
MatchAdapter.class getView方法

public View getView(int position, View convertView, ViewGroup parent) { 
    Match entry = listMatch.get(position); 

    MatchAdapter.ViewHolder myViewHolder; 

    if(convertView == null) { 

     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.match_row, parent, false); 

     myViewHolder = new MatchAdapter.ViewHolder(); 

     myViewHolder.home_team_name = (TextView) convertView.findViewById(R.id.home_team_name); 
     myViewHolder.away_team_name = (TextView) convertView.findViewById(R.id.away_team_name); 
     myViewHolder.home_logo_view = (ImageView) convertView.findViewById(R.id.home_team_logo); 
     myViewHolder.away_logo_view = (ImageView) convertView.findViewById(R.id.away_team_logo); 
     myViewHolder.venue = (TextView) convertView.findViewById(R.id.venue); 
     myViewHolder.time = (TextView) convertView.findViewById(R.id.time); 
     convertView.setTag(myViewHolder); 

    } else { 
     myViewHolder = (ViewHolder) convertView.getTag(); 
    } 

    ImageLoader imageLoader = new ImageLoader(this.context, "com.myapps", R.drawable.team_logo); 

    imageLoader.DisplayImage("http://myapps.com/assets/images/logos/"+ entry.getHome_team_logo(), 
      myViewHolder.home_logo_view); 
    imageLoader.DisplayImage("http://myapps.com/assets/images/logos/" + entry.getAway_team_logo(), 
      myViewHolder.away_logo_view); 

    myViewHolder.home_team_name.setText(entry.getHome_team_name()); 
    myViewHolder.away_team_name.setText(entry.getAway_team_name()); 
    myViewHolder.venue.setText(entry.getVenue()); 
    myViewHolder.time.setText(entry.getTime()); 

    return convertView; 
} 

其他相關代碼:

ImageLoader.class(我不希望這個問題變得太長滾動)

感謝您的幫助!

回答

0

我的猜測是下面的代碼是

匹配條目= listMatch.get(位置);

太早。 ListView的getView是多線程的,它需要一些時間膨脹佈局來轉換視圖。不知怎的,變量引用變得不正確。

呼叫匹配entry = listMatch.get(position);之後

其他{ myViewHolder =(ViewHolder)convertView.getTag(); }

+0

它不工作。 – 2013-03-15 07:57:24

+0

當你發現圖像不正確,文本是否正確? – NyanLH 2013-03-15 08:01:24

+0

是的,文字顯示正確。您可以在Google Play上獲得我的應用程序進行測試。 https://play.google.com/store/apps/details?id=com.jadualbola。lite – 2013-03-15 08:13:47