2012-07-23 77 views
1

我想改變列表視圖中選定的行的背景顏色,我能夠做到這一點。 但是當我點擊另一行時,之前選中的行的背景顏色保持不變。我有先前選定的行的位置,任何人都可以幫助我,如何改變之前選擇的行的背景顏色,因爲它是?如何設置自定義列表中選定行的背景顏色?

+0

發佈您的代碼。 – 2012-07-23 13:14:27

回答

1

如果你跟蹤和更新時listItems在模型中點擊狀態下的你可以把代碼在適配器顯示has been clicked-color然後調用

adapter.notifyDatasetChanged();

+0

我試過了,但沒有給出任何適當的解決方案來解決這個問題。任何其他幫助? – 2012-07-23 14:34:55

+0

您是否更新了適配器以在模型被標記爲選中時顯示不同的顏色?您是否希望列表顯示所有具有不同背景色的「已檢查」項目或僅顯示最近點擊過的項目? – Slickelito 2012-07-23 14:40:40

+0

我試過了,它工作。但當我滾動列表,然後返回到前一個位置,然後選定的行顏色消失。而且當發生滾動時notifydatasetchanged()也可以工作。所以請從這個查詢清除我 – 2012-07-24 02:59:27

0

在您的活動中使用Your_List對象的setOnItemClickListener。

見演示代碼:

list1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapter, View v, int position, long id) { 
       v.setBackgroundColor(Color.BLUE); // <--- Use color you like here 
      //^this v gives current row. 
    } 
}); 

這將使背景顏色改變該行永遠。

+0

我知道,但我想要取回任何其他行被選中時該行的前一個背景顏色。請告訴我,如果你有任何其他解決這個問題.. – 2012-07-23 14:36:05

+0

編輯你的問題,並在其中發佈你的代碼。 – 2012-07-23 14:39:33

1

我認爲,如果你看看這可能是更容易以另一種方式。

目前,您的邏輯是「如果我點擊此行,將其顏色更改爲特殊顏色並將舊行顏色更改爲原始顏色」。但是,這似乎並不是實際上想要的邏輯。相反,您希望最後一次點擊(又名選定)行是不同的顏色。

你還沒有發佈任何代碼,所以我不知道你是否在這個項目中實現自己的ListAdapter。這是我會採取的方法。創建一個擴展ListAdapter的類,並創建一個附加的私有變量來存儲最後一個選定行的位置。然後在被覆蓋的getView()方法,做一個快速檢查

if(rowPosition == lastSelectedRowPosition) 
    viewToReturn.setBackgroundColor(); 

如果你不知道如何使自己的列表適配器,在http://jnastase.alner.net/archive/2010/12/19/custom-android-listadapter.aspx檢查出的教程。

相關問題