Android - ListFragment SimpleAdapter 改变颜色

Android - ListFragment SimpleAdapter change color

有没有一种简单的方法可以更改每隔一行的颜色

我试过了,但不幸的是它不起作用。

  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 的自定义适配器。

How can I make my ArrayAdapter follow the ViewHolder pattern?

你可以实现这段代码。

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 文字,以便将其解释为十六进制数
  • 包括 Alpha 通道的 ff
  • 同时在else案例中设置颜色以避免视图回收出现问题