2012-10-30 45 views
30

Veritabanımdaki değerlerle doldurduğum bir ListView var. Veritabanı boşsa, ListView'in ilk öğesini "Veri yok" olarak ayarlıyorum. Bu öğeye tıklayarak devre dışı bırakmak istiyorum. ArrayAdapter kullandım. Yapmaya çalıştım, hepsi yanlış, ama yanlış bir şeydi. ListView'un isClickable'ı ve setEnabled'ı false olarak ayarlansa bile, kullanışsızdır. Ve OnItemClickListener için kodu diğer koşulda koydum, bu da liste öğesinin tıklanabilir olmasını engellemiyor. Birisi alternatif bir çözüm var mı? Teşekkürler!Android'de ListView'i tıklayarak nasıl devre dışı bırakılır?

cevap

87

yapın hiçbir şey yapmak:

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

hep benim için çalışıyor.

+0

benim için de çalıştı! –

+0

Rocking ... bu iyi çalışıyor .. – vabhavsingh

+0

Devre dışı bırakıldıktan sonra yeniden nasıl etkinleştirebilirim? –

9

gösterdi gibi boş Görünüm ayarlayabilir ve otomatik ele alınacaktır: deyim OnClick içinde listview girdisinin içeriğini kontrol etmek eğer Hayır' içeriyorsa

<?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

yardım eder! Bu sadece soruya cevap vermekle kalmıyor, aynı zamanda boş bir listeyi işlemenin daha iyi bir yolunu da sunuyor! – chuky

0

Belki bir kullanabiliriz veri' başka return false için isEnabled işlevini kullanmak ArrayAdapter aramaları özel olarak olağan

2

sayede tıklama

13

tüm kolay devre dışı bırakmak istediğiniz zaman sonra false dönmek o liste için Adaptör oluşturmak ve orada bu yöntemi

public boolean isEnabled(int position); 

geçersiz! Benim ihtiyacına göre böyle yaptılar

+0

Çok teşekkürler! Benim için çalıştı, tüm yukarıda benim için çalışmadı .. –

+2

Kötü! Bu, kaydırmayı önler. –

0

list.setEnabled (yanlış) Bu kabul cevap olmalıdır size bazı nasıl

@Override 

public boolean isEnabled(int position) { 
     if(data.get(position).isClickable==false) 
     { 
      return false; 
     } 
     return super.isEnabled(position); 
    } 
İlgili konular