2010-09-16 9 views
13

XML'de tanımlanmış bir ListView içeren bir Etkinliğim var (onun ListActivity sınıfını alt sınıflandırma değil).Call to ListView'ın setEmpty yöntemi çalışmıyor (liste boşken hiçbir şey görüntülenmiyor)

ben ListView boşken bir ileti görüntülemek için istiyorum, bu yüzden setEmptyView yöntemiyle bunu yaparken çalıştı:

listView = (ListView) findViewById(R.id.list); 
TextView emptyListText = new TextView(this); 
// also tried with the following line uncommented 
// emptyListText.setId(android.R.id.empty); 
emptyListText.setText(getString(R.string.EmptyList)); 
listView.setEmptyView(emptyListText); 

Ama çalışmıyor.

Herhangi bir fikrin var mı?

Teşekkürler.

cevap

0

Hmm, belki de sebebi görünümün düzen paramizlerinin ayarlanmamış olmasıdır. Bu görünüme bazı mizanpaj paramları ayarlamaya çalışın ve bunun işe yarayacağını düşünüyorum. Böyle bir şey: Bu işe yaramazsa

emptyListText.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 

, böyle bir şey ile, sizin ListView ebeveyn (R.id.list) görünümü şişirmek için deneyin: Ben

mEmptyListView = (LinearLayout) getLayoutInflater().inflate(
       R.layout.no_items, 
       (LinearLayout) findViewById(R.id.list)); 
mListView.setEmptyView(findViewById(R.id.no_items)); 

onu bellekten yazmak, o zaman işe yaramazsa veya herhangi bir yazım hatası varsa lütfen bana bildirin. görünürlük değilse

emptyListText.setVisibility(View.GONE); 
((ViewGroup)listView.getParent()).addView(emptyListText); 

: Temelde fikir görünümü setText() çağırdıktan sonra Kodunuzdaki aşağıdaki iki satırı eklemeniz gerekir düzene

Ger

+0

teşekkür ederiz. – MyNameIsZero

+0

Tamam, cevabımı düzenledim. Bu sizin için çalışıyorsa bana bildirin ... – ggomeze

23

eklenmelidir olmasıdır GONE (gizli) olarak ayarlandığında, TextView her zaman görünür hale gelir. İkinci satır, TextView'ı, Görünürlük XML Görünümlerini kullanırken otomatik olarak işlenen ListView'un ViewGroup'ına yerleştirir.


Kaynak: http://www.littlefluffytoys.com/?p=74

+0

@MyNameIsZero: Cevaplarımız yardımcı oldu mu yoksa hala sorun mu yaşıyorsunuz? – McStretch

+5

Teşekkürler, görünümü aynı ViewGroup'a yerleştirmek yardımcı oldu. GONE, setEmptyView ile otomatik olarak ayarlanır, bu nedenle setVisibility'yi aramanıza gerek yoktur. –

+0

Teşekkürler dostum, bu kaya –

2

... Bu yolu deneyin

İlk basit activity_main.xml düzen

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity" > 

    <ListView 
     android:id="@+id/root_list" 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" /> 

    <ViewStub 
     android:id="@+id/root_empty" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout="@layout/empty_view" 
     android:visibility="gone" /> 

</LinearLayout> 

ve MainActivity.java gelen

:

public class MainActivity extends Activity { 
    ListView mListView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     this.mListView = (ListView) findViewById(R.id.root_list); 
     mListView.setEmptyView(findViewById(R.id.root_empty)); 

     mListView.setAdapter(null); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    }  
} 

R.layout.empty_view ürününe yerleştirilen bağlantı, bağdaştırıcının boş olduğu veya isEmpty öğesi true olarak belirdiğinde görünecektir.

Ben empty_view.xml için bu kullandı: Öneriniz ama onun hala çalışmıyor için

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

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     android:background="@color/gray" 
     android:gravity="center" 
     android:text="@string/list_empty" 
     android:textColor="@color/white" 
     android:textSize="24sp" /> 

</LinearLayout> 
İlgili konular