0

listview下面显示了在包含 3中显示数据的代码和屏幕截图textview

getView()我在类的方法中尝试了以下代码,Adapter以将背景图像提供给备用行,即行号。0、2、4等

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

另外,请参阅下面xml使用alignTopalignBottom参数,仍然在Index按钮单击时,第 2 和第 3textview没有适当地获得背景颜色。

编辑 - 如果我使用颜色而不是图像作为背景,它适用于除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按下按钮。

Index第二个显示了一个按下按钮的实例。

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

4th 显示点击时的布局List item

我究竟做错了什么?

任何帮助都将挽救生命!

屏幕

4

3 回答 3

1

几件事....不确定不同的按钮是什么以及它们的作用,但这不重要...

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

另外,TextViews与其单独设置不同的背景,为什么不只为ViewGroup包含所有这些的TextViews(我想象一个LinearLayout或类似的东西)设置它?

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

于 2012-01-07T07:24:38.750 回答
1

这看起来是视图重用问题,但我不能确定,因为我没有看到那部分代码。在您getView是否重用视图(即您是否使用convertView参数)?如果你这样做,那么这就是你的答案。您必须始终将背景设置为您想要的颜色。像这样的东西:

if (count % 2 == 0) {
    ...
    holder.txtFirst.setBackgroundDrawable(d);
} else {
    holder.txtFirst.setBackgroundDrawable(myDefaultRowColor);
}
于 2012-01-07T08:43:14.027 回答
0

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

holder.txtFirst.setImageResource(R.drawable.Imagename);
于 2012-01-07T07:33:36.923 回答