2016-01-12 27 views
0

我试图设置ListView中显示的不同文本颜色(TextView)。这是ListView控件:如何在ArrayAdapter中设置TextView的颜色?

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

这是row.xml TextView的:

<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); 

这一切工作正常。但是现在,我想给列表中的每个文件指定它自己的颜色。那可能吗?

+2

你需要一个定制的适配器。 – Blackbelt

+0

@Blackbelt说什么。有很多教程(谷歌:“Android自定义列表视图”),并在这里回答了许多问题。 – 323go

回答

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; 
} 
}); 
相关问题