簡體   English   中英

ListView項目背景色

[英]ListView item background color

我有一個ListView,其中每個第二個項目都應具有不同的顏色(例如:白色->灰色->白色->灰色等),它最初似乎可以正常工作,但是一旦我開始滾動,就會顯示backgroundcolor似乎失敗了:另一種顏色隨機設置到項目上,當我再次向上滾動時,這也會發生在開始時顏色正確的項目上。 有人可以提示我為什么會這樣嗎?

我已經在適配器中嘗試過此操作:

    if((position % 2) == 1) {
        layoutHolder.setBackgroundColor(getContext().getResources().getColor(R.color.light_green));
    }

這在我的ListFragment中:

    private AsyncTask<Void, Void, Void> fillList = new AsyncTask<Void, Void, Void>() {

    @Override
    protected Void doInBackground(Void... params) {
        addListItems();
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        for (int i = 1; i < getListView().getChildCount()-1; i = i+2) {
            LOGI(TAG, "for-loop " + String.valueOf(i));
            getListView().getChildAt(i).setBackgroundColor(getSherlockActivity().getResources().getColor(R.color.light_green));
        }
    }   
};

更新:

我做了一些日志記錄后發現,如果我添加的元素多於屏幕上可見的元素,並檢查ListViews子級計數,則ListView僅保存最初在屏幕上可見的子級,其余似乎是滾動完成后加載/添加。

在您的適配器中使用此代碼..其工作..您需要提供else條件。

if ( position % 2 == 0 ){
                convertView.setBackgroundColor(Color.GREEN);
            }else{
                convertView.setBackgroundColor(Color.RED);
            }

在此處輸入圖片說明

在適配器的getView()中嘗試一下

if((position % 2) == 1) {
                  LayoutHolder.setBackgroundColor(getContext().getResources().getColor(R.color.white));
}else{
            LayoutHolder.setBackgroundColor(getContext().getResources().getColor(R.color.gray)
}

嘗試在onPostExecute()中添加它

getListView().getChildAt(i).setCacheColorHint(getSherlockActivity().getResources().getColor(R.color.light_green));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM