2013-04-11 8 views
14
<TextView 
      android:id="@android:id/empty" 
      style="@style/FacebookFont" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" 
      android:text="@string/no_result_found" 
      android:textColor="@color/white" /> 

इस खाली देखने के लिए एक्सएमएल कोड है करने के लिए खाली दृश्य सेट।एंड्रॉयड: सूची दृश्य

list.setAdapter(adapter); 
    list.setEmptyView(findViewById(android.R.id.empty)); 

मैं फिर भी सूचीदृश्य में आइटम नहीं हैं भी पहले सूचीदृश्य खाली दृश्य दिखाया गया है से भर जाता है: मैं खाली दृश्य इस प्रकार की स्थापना कर रहा हूँ। मैं नहीं चाहता कि उस दृश्य दृश्य को दिखाया जाए जब सूचीदृश्य में कुछ आइटम शामिल होता है।

कृपया मदद करें।

उत्तर

14

यदि आप ListActivity का उपयोग कर रहे हैं तो खाली दृश्य मैन्युअल रूप से सेट करने की आवश्यकता नहीं है। अपने कोड से list.setEmptyView(findViewById(android.R.id.empty)); हटाएं।

नीचे तो उसे अपने आप EmptyView जोड़ने है सूची कोई आइटम नहीं है अगर की तरह अपने लेआउट बदलें:

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

अभी भी वही समस्या है। – user2159624

+0

क्या आप मुझे पूर्ण गतिविधि कोड और लेआउट फ़ाइल कोड दिखा सकते हैं ??? इन सभी को अपने प्रश्न –

+0

में निश्चित रूप से जोड़ें, लेकिन अगर आपको कुछ करने की ज़रूरत है, तो आप उस टेक्स्ट व्यू (या जो कुछ भी देखें) को पकड़ लेंगे, इसके साथ कोई वास्तविक आईडी नहीं है, तो आप लेआउट को प्रोग्रामिक रूप से पार करते हैं? – Gubatron

11

आप एडाप्टर की स्थापना करता है, तो अपने MainActivityListActivity का विस्तार नहीं किया गया है से पहले खाली दृश्य सेट करना होगा।

देर जवाब के लिए इस

list.setEmptyView(findViewById(android.R.id.empty)); 
list.setAdapter(adapter); 

क्षमा कोशिश करो!

वैकल्पिक विधि: अपनी गतिविधि को सूची गतिविधि से बढ़ाएं। और आईडी के साथ अपनी सूची जमाव के बारे में textview जोड़ने android.R.id.empty

5

प्रयास करें इस

View view = getLayoutInflater() .inflate(<resource id of the empty view>, null); 
    ViewGroup viewGroup= (ViewGroup)list.getParent(); 
    viewGroup.addView(view); 
    list.setEmptyView(view); 
    list.setAdapter(adapter); 
5

वहाँ, कुछ सही उत्तर दिए गए हैं फिर भी, मुझे लगता है कि यह सबसे अच्छा तरीका मैंने पाया है:

View emptyView = getLayoutInflater().inflate(R.layout.empty_list_cart, null); 
addContentView(emptyView, listView.getLayoutParams()); // You're using the same params as listView 
listView.setEmptyView(emptyView); 
listView.setAdapter(adapter); 
0

जो भी @dawalSodhaParmar समझाया गया है सही है। लेकिन जब आप जवाब डालने के तरीके को देखते हैं तो एक भ्रम होता है।

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    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" 
    tools:context=".SampleActivity"> 

    <ListView 
     android:id="@+id/list" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:divider="@null" 
     android:dividerHeight="0dp" /> 

    <!-- Empty view is only visible when the list has no items. --> 
    <TextView 
     android:id="@+id/empty_text_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:text="NO DOCUMENTS AVAILABLE!" 
     android:textColor="#525252" 
     android:textAppearance="?android:textAppearanceMedium" 
     android:visibility="gone"/> 

</RelativeLayout> 

मान लीजिए कि आपके पास पहले से ही एक सूची दृश्य और एडाप्टर डेटा के साथ बैकिंग है या नहीं। और यह मानते हुए कि सब कुछ ठीक काम कर रहा है, जो भी इस खाली सूची को लागू करना चाहता है, दृश्य स्क्रीन को नीचे की तरह शुरू करना है: चरण 1: मौजूदा गतिविधि XML फ़ाइल को संशोधित करें जिसमें मैंने यहां उपयोग किए गए एक के साथ सूची दृश्य है। आप या तो एक रैखिक लेआउट या सापेक्ष लेआउट का उपयोग कर सकते हैं, लेकिन लचीलापन के कारण अधिमानतः सापेक्ष। और एक पाठ दृश्य जैसा मैंने लिखा है।

चरण 2: अपनी गतिविधि जावा फ़ाइल पर जाएँ, और अपने setContentView

ListView emptyListView = (ListView) findViewById(R.id.list); 
// set your adapter here 
// set your click listener here 
// or whatever else 
emptyListView.setEmptyView(findViewById(R.id.empty_text_view)); 

यह है कि के बाद, अब चलाने के लिए और आप सेट कर रहे हैं!

संबंधित मुद्दे