繁体   English   中英

将背景颜色更改为ListView的项目范围

[英]Change background color to item range of ListView

我有这个特殊需要:

当我单击Button ,应通过更改背景颜色来突出显示ListView某些项目-通常是一行或一系列行,而不是随机元素。 Android是否提供此类功能? 我当时正在考虑在自定义适配器中添加一种方法来设置行范围,然后在getView方法中添加一个检查方法来确定是否设置标准或突出显示的背景,最后通知适配器数据已更改,但是我很确定无需重新填充整个ListView就可以做到这一点。

我知道有多种选择,但是我认为这是完全不同的,不是吗?

更新:使用list.getChildAt(pos).setBackgroundColor(Color.BLUE); 我收到一个NullPointerException因为它仅包含可见的子项,而不是所有项。 有没有其他解决方案?

UPDATE2:看看我的答案。

按下按钮时,使用以下代码突出显示列表项。 将此代码放在按钮的onClick事件上。

listview.getChildAt(position).setBackgroundColor(Color.BLUE);

我的解决方案:

在MyAdapter类中:

private boolean highlighted = false;
private Integer from, to;
//....
public void setHighlight(int from, int to) {
    if ((this.from != null && this.from == from) && (this.to != null && this.to == to)) {
        highlighted = false;
        this.from = null;
        this.to = null;
    } else {
        highlighted = true;
        this.from = from;
        this.to = to;
    }
}
//...
@Override
public View getView(int pos, View v, ViewGroup vg) { 
    parsedLine entry = lines.get(pos);
    //...
    if (highlighted && pos>=from && pos<=to){
        v.setBackgroundColor(Color.parseColor(Theme.getHighlightColor()));
    } 
    //...
    return v;
}

然后,无论我要突出显示哪些行:

MyAdapter myadapter = (MyAdapter)mylist.getAdapter();
myadapter.setHighlight(from, to);
myadapter.notifyDataSetChanged();
mylist.setSelection(from);

@ Vektor88-请尝试更改一次

 final EditText input = new EditText(CLASSNAME.this);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM