Android - ListFragment SimpleAdapter 更改颜色



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

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

  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()的正确想法,但您应该将其更改为如下所示:

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()调用以获取默认行为以进行进一步修改
  • 颜色值 int 文本以 0x 开头,以便将其解释为十六进制数
  • 包括 Alpha 通道的ff
  • 还要设置else情况下的颜色,以避免视图回收出现问题

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

如何使我的 ArrayAdapter 遵循 ViewHolder 模式?

您可以实现此代码。

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

最新更新