Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-ListFragment SimpleAdapter更改颜色_Android_Colors_Android Listfragment_Simpleadapter - Fatal编程技术网

Android-ListFragment SimpleAdapter更改颜色

Android-ListFragment SimpleAdapter更改颜色,android,colors,android-listfragment,simpleadapter,Android,Colors,Android Listfragment,Simpleadapter,有没有一种简单的方法可以改变每一排的颜色 我试过这个,但不幸的是它不起作用 new SimpleAdapter(Activity.this, listElements, R.layout.list, new String[]{"dt", CONTENT, TIMESTAMP},

有没有一种简单的方法可以改变每一排的颜色

我试过这个,但不幸的是它不起作用

  new SimpleAdapter(Activity.this,
                                    listElements,
                                    R.layout.list,
                                    new String[]{"dt", CONTENT, TIMESTAMP},
                                    new int[]{R.drawable.dt, R.id.content, R.id.timestamp}){
                                public View getView(int position, View v, ViewGroup parent) {
                                    if (position%2 == 0) {
                                        v.setBackgroundColor(920000);
                                    } else {
                                    }
                                    return v;
                                }
                            }
                    );

是的,创建一个自定义适配器来实现getView,就像这个答案一样

您可以实现此代码

if(position % 2 == 0){ //even number
    //make a specific color
}
else if(position % 2 == 1){ //odd number
    //make a specific color
}

你问题中的代码非常接近正确;覆盖
getView()
的想法是正确的,但应该将其更改为如下所示:

public View getView(int position, View v, ViewGroup parent) {
    v = super.getView(position, v, parent);
    if (position%2 == 0) {
        v.setBackgroundColor(0xff920000);
    } else {
        v.setBackgroundColor(/* default color */);
    }
    return v;
}
我所做的更改是:

  • 包括一个
    super.getView()
    调用,以获取默认行为以进行进一步修改
  • 0x
    开始颜色值int literal,以便将其解释为十六进制数
  • 包括alpha通道的
    ff
  • 另外,在
    else
    案例中设置颜色,以避免视图循环出现问题

这就是我不想做的事?没有别的办法吗?没有。无论发生什么情况,都必须创建自定义适配器。