以下显示用于在listview
中显示包含3 textview
的数据的代码和屏幕截图。
我在getView()
类的Adapter
方法中尝试了以下代码,以便为备用行提供背景图像,即行号。 0,2,4等
当我尝试实现这个时,我得到屏幕截图中显示的输出,即行没有得到适当的影响。
另请参阅下面xml
,其中使用了alignTop
和alignBottom
参数,仍在Index
按钮点击,第2和第3 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
按钮。
2nd显示按Index
按钮的实例。
3rd显示按下索引按钮后再次按下Gainers
按钮的实例。
第4个显示点击List item
时的布局。
我做错了什么?
任何帮助都将有益于生命!
答案 0 :(得分:1)
一些事情....不确定不同的按钮是什么以及它们做了什么,但它应该无关紧要......
您应该在(count % 2 != 0)
时设置背景,因为视图可以在列表中重复使用,因此最好是安全的。
此外,不是单独为不同的TextViews
设置背景,为什么不为仅包含所有ViewGroup
的{{1}}设置背景(我想象TextViews
或类似的东西)?
只是要仔细检查,LinearLayout
是调用count
时得到的参数?
也许你可以发布一些getView
方法的代码,这可能会有所帮助(以获得更好的答案)。
答案 1 :(得分:1)
这看起来是一个视图重用问题,但我无法确定,因为我没有看到代码的那一部分。在您的getView
中,您是否重复使用了视图(即您是否使用了convertView
参数)?如果你这样做,那就是你的答案。您必须始终将背景设置为所需的颜色。像这样:
if (count % 2 == 0) {
...
holder.txtFirst.setBackgroundDrawable(d);
} else {
holder.txtFirst.setBackgroundDrawable(myDefaultRowColor);
}
答案 2 :(得分:0)
你正在使用setbackgrounddrawable,但我认为你必须使用下面的代码来设置图像
holder.txtFirst.setImageResource(R.drawable.Imagename);