我正在尝试将某些ListView项目(如电话号码和电子邮件地址)的颜色单独设置为蓝色,以便用户知道它们是可点击的。这是一个片段,但实现此功能根本不能正常工作,列表项会在滚动列表时随机更改颜色。
List<Map<String, String>> data = new ArrayList<Map<String, String>>();
//...add data to list
SimpleAdapter adapter=new SimpleAdapter(this, data, R.layout.simple_list_item_2_custom, new String[] { LABEL, VALUE },
new int[] { R.id.text1, R.id.text2 })
{
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LinearLayout view = (LinearLayout)super.getView(position, convertView, parent);
String label = data.get(position).get(LABEL);
if (label.equals("Email Address"))
{
((TextView)view.getChildAt(0)).setTextColor(Color.BLUE);
}
return view;
}
};
这是定义列表项的LinearLayout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="vertical" >
<TextView android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
android:layout_marginTop="8dip"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView android:id="@+id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignStart="@android:id/text1"
android:textAppearance="?android:attr/textAppearanceListItem" />
</LinearLayout>
答案 0 :(得分:1)
你错过了“if(label.equals(”电子邮件地址“))”
的其他内容当它不是电子邮件地址时,您必须放置另一种文字颜色,如下所示: ((的TextView)view.getChildAt(0))setTextColor(Color.WHITE);
原因是因为Android适配器重新使用不久显示的旧行,在这种情况下是您已定义为蓝色的行。