2012-02-14 87 views
1

我有兩個ListView控件在XML,即lvPrograms & lvEpisodes。它們水平放置。Android的ListView項選擇問題

我從Web服務填充這些ListViews。

當活動加載時,我打電話給web服務獲取lvPrograms的數據。當我收到程序,然後我加載情節爲檢索列表中的第一個程序。並將lvPrograms的第一項設置爲選定/突出顯示,以向用戶顯示已加載的情節適用於本程序項目。我將它設置如下:

private void highlightSelectedProgram(int _previousSelectedProgramIndex, int _currentSelectedProgramIndex) { 
    ListView allProgramsList = (ListView) findViewById(R.id.allProgramsList); 

    //Get the last selected List Item 
    View selectedChild = allProgramsList 
      .getChildAt(_currentSelectedProgramIndex); 

    //_previousSelectedProgramIndex & _currentSelectedProgramIndex are to keep track 
    //of currently/previously selected PROGRAM index 


    if (selectedChild != null) { 

     // get selected shape 
     Drawable shape = getResources().getDrawable(
       R.drawable.selected_item_selector); 

     //change selected item background to be highlighted 
     selectedChild.setBackgroundDrawable(shape); 

     //change previous item, if any (is not -1), to normal state 
     if (_previousSelectedProgramIndex != ._currentSelectedProgramIndex && _previousSelectedProgramIndex != -1) { 
      TextView previousChild = (TextView) allProgramsList 
        .getChildAt(_previousSelectedProgramIndex); 

      previousChild.setBackgroundResource(R.drawable.item_selector); 
     } 
    }  
} 

我把這種方法時,用戶對程序的點擊列表項以突出其發作及被裝載在lvEpisodes列表視圖的項目。

它看起來像下面的圖像。

enter image description here

問題只發生在ListView中有多個項目那麼它的可視面積。所以,當我點擊第一個項目時,它的背景被上面的代碼改變了,但是其他一些項目,這是不可見的項目,也改變了背景。爲什麼??

我想我錯過了一些事情或處理最初看不見的列表項是不同的。

OR你可以指導我的方式,我可以聲明爲這被點擊的項目......只有被點擊項目背景選擇仍然突出。所以,如果用戶點擊了一些其他項目列表這是隱藏的項目之一,那麼該項目變得突出顯示...所以在列表中隨時必須有一個單獨的HIGHLIGHTED項目......如果可能的話,這將是很棒的。

任何幫助是非常感謝,因爲發佈日期是接近。 感謝

回答

2

使用類似:

lvPrograms.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
lvPrograms.setSelector(R.drawable.programs_background); 

programs_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true" android:drawable="@drawable/shape" /> 
</selector> 
+0

感謝MEGHA喬希......我會盡快爲我達到我的系統 – Aamir 2012-02-15 20:37:45

+0

非常感謝你MEGHA檢查。 ..這是工作如預期的那樣...只有一件事你可以告訴我...我想列表中的第一個項目有一個單獨的可繪製集,當列表加載第一次,如圖所示上面的圖像...是否有辦法告訴列表標記t中的第一項他列出爲「激活」?謝謝 – Aamir 2012-02-16 08:17:07

+1

好吧...得到它在SO上的答案爲lvPrograms.setItemChecked(0,true); ...現在完成...謝謝 – Aamir 2012-02-16 16:12:21