我重写SimpleAdapter:
class NoticelistAdapter extends SimpleAdapter
{
public NoticelistAdapter(Context context,
List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to)
{
super(context, data, resource, from, to);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
Map<String,Object> map= list.get(position);
int readState = (Integer) map.get("ReadState");
if (readState == 1)
{
// do something to change the color of title
}
return convertView;
}
}
适配器是:
adapter = new NoticelistAdapter(NoticelistActivity.this, list, R.layout.row_noticelist,
new String[] { "Title", "RealName","Date"},
new int[] { R.id.noticetitle, R.id.noticerealname,R.id.noticedate});
在每个地图中都有一个名为&#34; readstate&#34;的int参数,如果readstate == 1,那么我想要改变&#34; Title&#34;的颜色。 (TextView)到另一种颜色。 我知道我应该在我的适配器中覆盖getView(...),但我不知道如何做到这一点。你能帮我吗?提前谢谢。
答案 0 :(得分:4)
覆盖适配器的getItemViewType()
以返回两个不同的布局标志,并覆盖getViewTypeCount()
以返回视图数。然后根据标志,在getView()
:
private static final int TYPE_READ = 0;
private static final int TYPE_NON_READ = 1;
private static final int TYPE_MAX_COUNT = TYPE_NON_READ + 1;
//...
@Override
public int getItemViewType(int position) {
int readState = (Integer) mMap.get("ReadState");
if(readState==1){
return TYPE_READ;
}else{
return TYPE_NON_READ;
}
@Override
public int getViewTypeCount() {
return TYPE_MAX_COUNT;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
int type = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case TYPE_READ:
convertView = mInflater.inflate(R.layout.item_one, null);
//set read layout
break;
case TYPE_NON_READ:
convertView = mInflater.inflate(R.layout.item_two, null);
// set non-read layout
break;
}
//etc
答案 1 :(得分:2)
在获取视图方法中。检查位置。如果poistion == row0然后使用drawable将背景颜色设置为背景..您可以使用行边框自定义每个listview行的样式。 http://docs.xamarin.com/Android/Guides/User_Interface/Working_with_ListViews_and_Adapters/Part_3_-_Customizing_a_ListView“s_Appearance。该链接将帮助您。
答案 2 :(得分:1)
正如您所说,您在创建时使用自定义适配器进行列表视图,然后您需要执行的操作如下所示。在适配器的getView方法中,您需要设置列表行xml的父视图的背景颜色。您还可以根据您的要求更改每一行颜色。
请参阅此How can I set different background color for each row in listview?