如何在ArrayAdapter中设置TextView的颜色?

时间:2016-01-12 19:30:49

标签: android list colors textview

我正在尝试设置ListView中显示的不同文本颜色(TextView)。这是ListView:

<ListView
android:id="@android:id/list"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="#a0a0a0"/>

这是row.xml中的T​​extView:

<TextView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rowtext"
android:layout_width="fill_parent"
android:layout_height="40sp"
android:textSize="15sp"
android:textColor="#a0a0a0"
android:background="#000000"
android:lines="1"
android:singleLine="true"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true" />

这就是填写清单的方式:

ArrayAdapter<String> fileList = new ArrayAdapter<String>(this, R.layout.row, lstItem);
setListAdapter(fileList);

一切正常。但现在,我想给该列表中的每个文件都有自己的颜色。这可能吗?

1 个答案:

答案 0 :(得分:0)

此代码可能对您有所帮助:

final ListView lv = (ListView)findViewById(R.id.lv);
lv.setAdapter(new BaseAdapter()
{
public View getView(int position, View convertView, ViewGroup parent)
{
    if (convertView == null)
    {
        convertView = new TextView(ListHighlightTestActivity.this);
        convertView.setPadding(10, 10, 10, 10);
        ((TextView)convertView).setTextColor(Color.WHITE);
    }

    convertView.setBackgroundColor((position == curSelected) ? 
        Color.argb(0x80, 0x20, 0xa0, 0x40) : Color.argb(0, 0, 0, 0));
    ((TextView)convertView).setText((String)getItem(position));

    return convertView;
}

public long getItemId(int position)
{
    return position;
}

public Object getItem(int position)
{
    return "item " + position;
}

public int getCount()
{
    return 20;
}
});