2014-09-22 195 views
1

我對此非常着迷 - 確定其列表視圖 - 兩個圖像視圖 - 左側所有listview項目必須每個都有一個圖像 - 左側全部填充。但是 - 我只想用imageview填充3個listitems。據我所知,由於回收利用,其他人(我不希望被填充)必須設置爲隱形。發生什麼事情 - 啓動應用程序時 - 首先看到右側的3個圖像瀏覽 - 但是,當它們滾動出視圖然後返回時 - 它們都消失了。當視圖向外滾動時,圖像視圖消失

求助

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

    ViewHolder holder; 

    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.main, parent, false); 
     holder = new ViewHolder(); 
     holder.textView = (TextView) convertView.findViewById(R.id.label); 
     holder.imageView = (ImageView) convertView.findViewById(R.id.icon); 
     holder.infoView = (ImageView) convertView.findViewById(R.id.image_icon); 
     convertView.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.textView.setText(values[position]); 

    switch (position) { 
     case 0: 
      holder.imageView.setImageResource(R.drawable.conv); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 1: 
      holder.imageView.setImageResource(R.drawable.counting); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 2: 
      holder.imageView.setImageResource(R.drawable.travelling); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 3: 
      holder.imageView.setImageResource(R.drawable.dating); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 4: 
      holder.imageView.setImageResource(R.drawable.restaurant); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 5: 
      holder.imageView.setImageResource(R.drawable.thaidishes); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 6: 
      holder.imageView.setImageResource(R.drawable.time_); 
      holder.infoView.setImageResource(R.drawable.imageicon); 
      break; 
     case 7: 
      holder.imageView.setImageResource(R.drawable.time2); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 8: 
      holder.imageView.setImageResource(R.drawable.colours); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 9: 
      holder.imageView.setImageResource(R.drawable.weather); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 10: 
      holder.imageView.setImageResource(R.drawable.directions); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 11: 
      holder.imageView.setImageResource(R.drawable.emergency); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 12: 
      holder.imageView.setImageResource(R.drawable.zoo); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 13: 
      holder.imageView.setImageResource(R.drawable.shopping); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 14: 
      holder.imageView.setImageResource(R.drawable.bank); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 15: 
      holder.imageView.setImageResource(R.drawable.hotel); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 16: 
      holder.imageView.setImageResource(R.drawable.countries); 
      holder.infoView.setVisibility(View.GONE); 
      break; 
     case 17: 
      holder.imageView.setImageResource(R.drawable.cities); 
      holder.infoView.setImageResource(R.drawable.imageicon); 
      break; 
     case 18: 
      holder.imageView.setImageResource(R.drawable.features); 
      holder.infoView.setImageResource(R.drawable.imageicon); 
      break; 
    } 

    return convertView; 
} 
+0

holder.infoView.setVisibility(View.VISIBLE);沒有必要設置再生意見不可見。他們不在屏幕上,否則他們不會被回收。 – 2014-09-22 20:17:18

回答

1

你回收時的ImageView知名度設置了,但它不進行重置爲可見對於具有第二圖像元素非常感激。這種加入情況下,第二圖像應顯示:

holder.infoView.setVisibility(View.VISIBLE); 
2

我不能強調不夠,一個18的情況下開關是壞的風格,很辛苦的工作,而且該方法是太長了。您應該重新思考代碼的構建方式 - 將其分解爲更多的方法或類。

至於你的問題,你的意見正在被回收,所以一旦你設置他們走了 - 他們走了。

你只是缺少行:在例6,17和18

+0

是的你是對的 - 錯誤的代碼。我只能說它老了,我必須在適當的時候刷新它。還有更多 - 當我餓了的時候,我得學會休息一下,吃點食物 - 我怎麼會是這樣一個白癡;-( – java 2014-09-22 20:19:16

+0

不要對自己這麼辛苦,吃點東西,超級重要。 – 2014-09-22 20:25:33

相關問題