2014-09-22 99 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

相关问题