0

以下显示的代码和截图显示listview中的数据,其中包含3个textview无法在getView方法中正确设置背景图片

我试过getView()方法Adapter类中的以下代码,给背景图像交替行,即行号。 0,2,4等。

当我尝试实现这一点时,我得到了如屏幕截图所示的输出,即行没有得到适当的影响。

另外,请参考下面xml其中alignTopalignBottom参数被使用,仍然在Index按钮点击,第二和第三textview没有适当得到背景颜色。

编辑 - 如果我使用颜色代替背景图片,它适用于除Index按钮以外的所有情况。

if (count % 2 == 0) { 

    try { 

     InputStream is = ctx.getAssets().open("cellbg.png"); 
     Drawable d = Drawable.createFromStream(is, "cellbg"); 
     holder.txtFirst.setBackgroundDrawable(d); 
     holder.txtSecond.setBackgroundDrawable(d); 
     holder.txtThird.setBackgroundDrawable(d); 
     Log.v("count=", "" + (count++)); 

    } catch (Exception e) { 
     throw new Error(" exception in TableListAdapter " + e.getMessage()); 
    } 
} else { 
    Log.v("else count==", "" + (count++)); 
}  

列表结构(XML)

<TextView 
     android:id="@+id/FirstText" 
     android:layout_width="80dp" 
     android:layout_height="wrap_content"/> 

    <TextView 
     android:id="@+id/SecondText" 
     android:layout_width="55dp" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/FirstText" 
     android:layout_alignBottom="@+id/FirstText"/> 

    <TextView 
     android:id="@+id/ThirdText" 
     android:layout_width="40dp" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/FirstText" 
     android:layout_alignBottom="@+id/FirstText"/> 

第一屏幕显示在应用程序启动时,在默认情况下,Gainers按下按钮,列表结构。

第2个显示按下Index按钮的实例。

第3个显示按下索引按钮后再次按下Gainers按钮的实例。

第4个显示点击List item时的布局。

我在做什么错?

任何帮助都将是生命保护!事情

screen

回答

1

夫妇....不知道什么不同的按钮,以及他们做的,但它不应该的问题是什么?

你应该设置背景也当(count % 2 != 0)因为这些视图可以在列表中重用,所以最好是安全的。

此外,而不是单独设置不同的TextViews的背景下,为何不将其设置为仅包含所有这些TextViewsViewGroup(我想象一个LinearLayout或类似的东西)?

只是为了仔细检查,count是你在调用getView时得到的参数吗? 也许你可以发布更多的代码getView方法,这可能会有所帮助(获得更好的答案)。

+0

由于一吨BUDDY ...只需添加'holder.l1.setBackgroundDrawable(d);'到位设置背景每个TextView的和它的工作。 但我没有得到为什么我应该设置背景时(计数%2!= 0),因为在这种情况下,表bg将自动使用。 – GAMA 2012-01-07 07:31:00

+0

这一切都取决于你的getView方法......为了让它更快,你应该重用视图(这就是convertView参数),在这种情况下,你应该始终设置背景,因为你不知道你会得到什么。 – Matthieu 2012-01-07 07:35:41

+0

但是如果我想为每个文本框分配不同的背景图片呢? – GAMA 2012-01-07 07:38:26

0

您使用setbackgrounddrawable但我认为你必须使用下面的代码来设置图像

holder.txtFirst.setImageResource(R.drawable.Imagename); 
1

这看起来是一个视图重用的问题是,而是因为我没有看到,我不能肯定部分代码。在您的getView中,您是否重用了视图(即,您是否使用convertView参数)?如果你这样做,那就是你的答案。您必须始终将背景设置为所需的颜色。事情是这样的:

if (count % 2 == 0) { 
    ... 
    holder.txtFirst.setBackgroundDrawable(d); 
} else { 
    holder.txtFirst.setBackgroundDrawable(myDefaultRowColor); 
}