2012-10-30 56 views
30

我有一個ListView,我用我的數據庫中的值填充。如果數據庫爲空,我將ListView的第一項設置爲「無數據」。我想禁用點擊這個項目。我用過ArrayAdapter。我試圖讓areAllItemsEnabled,isEnabled爲false,但它沒用。即使我將ListView的isClickable和setEnabled設置爲false,它也沒用。我把OnItemClickListener的代碼放在else條件中,即使這樣也不能阻止列表項被點擊。有人有其他解決方案嗎?謝謝!如何禁用單擊Android中的ListView?

回答

87

在您的自定義ArrayAdapter使用的IsEnabled函數返回false:

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

總是對我的作品。

+0

也適合我! –

+0

晃動...這是很好的工作.. – vabhavsingh

+0

如何禁用後,我可以重新啓用? –

9

您可以設置空查看錶明,它會自動處理:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingLeft="8dp" 
     android:paddingRight="8dp"> 

    <ListView android:id="@android:id/list" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="#00FF00" 
       android:layout_weight="1" 
       android:drawSelectorOnTop="false"/> 

    <TextView android:id="@android:id/empty" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="#FF0000" 
       android:text="No data"/> 
</LinearLayout> 
+2

這應該是公認的答案!它不僅回答了這個問題,而且還提出了一個更好的方法來處理一個空列表! – chuky

0

也許你可以使用一個if語句來檢查在onclick列表視圖項的內容,如果它包含「不數據」什麼也不做,否則做平常

2

創建適配器該名單,並有覆蓋此方法

public boolean isEnabled(int position); 

然後返回false當你想禁用點擊

13

一切更容易! list.setEnabled(假)

+0

非常感謝!它爲我工作,所有上述沒有爲我工作.. –

+2

壞!這可以防止滾動。 –

0

我按照我的要求做了這樣的希望它可以幫助你一些如何

@Override 

public boolean isEnabled(int position) { 
     if(data.get(position).isClickable==false) 
     { 
      return false; 
     } 
     return super.isEnabled(position); 
    } 
相關問題