2011-02-05 45 views
2

我擁有的一切:與自定義適配器的自定義列表視圖,使用自定義的ListViewItem(它擴展的LinearLayout)的Android的ListView OnItemClick更改視圖屬性

我想要做什麼:當選擇列表框項目,我想更改所選視圖的背景可繪製。

發生了什麼:目前沒有。 Toast的確如其所示,但Background可繪製不會改變。我試着調用View.Invalidate(),但似乎並沒有做任何事情。

這是應該改變繪製的代碼片段:

public void onItemClick(AdapterView<?> arg0, View view, int index, long arg3) 
{ 
    Card card = CardVM.GetCurrentCards().get(index); 
    card.setBlocked(!card.isBlocked()); 
    if (card.isBlocked()) 
    { 
     view.setBackgroundResource(R.drawable.bluegradient); 
     Toast.makeText(this, "Card is now Blocked", 1).show(); 
    } 
    else 
    { 
     view.setBackgroundResource(R.drawable.greengradient); 
     Toast.makeText(this, "Card is now Available", 1).show(); 
    } 
} 

的切換功能不工作,如果你點擊它的第一次,它會說:「卡已被鎖住。」第二次顯示「Card is now available」...等等。 setBackgroundResource根本不起作用。此外,當填充列表視圖時,背景顏色設置正確(使用相同的資源和相同的功能)。

在此先感謝。

UPDATE

它出現的背景是變化的,但只有當屏幕被強制重新繪製。例如,當您點擊列表中的第一個項目將其變爲藍色時,您需要向下滾動(以將其從屏幕上移開),然後向上滾動。然後它變成藍色。我們可以避免這種情況嗎?

回答

1

使用AdapterView.OnItemSelectedListener(),也許像view.setBackgroundDrawable(getResources().getDrawable(R.drawable.listview_item_selected));

編輯:

佈局失效而不是個人觀點。

+0

感謝您的信息:請參閱我的更新。 – Peanut 2011-02-06 00:16:54