簡體   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