2013-07-12 66 views
-1

我創建了一個項目,其中列表視圖中有20個項目,其中我想禁用15個項目,除非它們被購買,並且只要購買它們就會變得可點擊,我試過了驗證碼:禁用列表視圖中項目的可點擊屬性

setListAdapter(new ArrayAdapter<String>(QuantitativeAptitude.this, 
      R.layout.row, quantList){ 

     @Override 
     public boolean isEnabled(int position) { 
      ListView lv = getListView(); 
       for (int i = 5; i <=20; i++){ 
        View v = lv.getChildAt(i); 
        v.setEnabled(false); 
       } 
      return super.isEnabled(position); 
     } 

    }); 

,但它不會幫助,而不是崩潰我的應用程序有任何建議.....

回答

2

我相信你可能要重寫的IsEnabled方法,並在那裏你可以指定某個條件它是否啓用。這種方法被稱爲用於集合中的每個ListViewItem的,因此,例如:

@Override 
public boolean isEnabled(int position) { 
    if(CONDITION_GOES_HERE){ 
     return false; 
    } 
    return true; 
} 

有可能做的更好/更簡單的方法,但是這是我想到的第一件事。

希望這將幫助你:)

+0

thanx您rply但在我的代碼我已經通過使用循環,任何其他有用的答案使用的IsEnabled方法... –

+0

我明白,但你獲取isEnabled方法中所有listviewitems的列表,這是您不需要的。爲每個爲其父容器創建的listviewitem調用此方法。如果你刪除了所有的代碼,並簡單地使用我提供的代碼,我想你會發現它會按照你的意願工作。至少我相信是這樣。因爲這是在單個項目上調用的,所以不需要循環。 – LokiSinclair

+0

你能告訴我一個isEnabled(int position)方法實現的例子,因爲我沒有得到如何將它應用於15個項目,並再次將它們轉換回可點擊狀態 –