<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" />
c'est le code xml pour une vue vide. Je mets la vue vide comme suit:
list.setAdapter(adapter);
list.setEmptyView(findViewById(Android.R.id.empty));
J'ai les éléments dans la liste même alors qu'avant que la liste ne soit remplie, la vue vide est affichée. Je ne veux pas que cette vue vide soit affichée lorsque listview contient un élément.
S'il vous plaît aider.
si vous utilisez ListActivity
, inutile de définir manuellement la vue vide. Supprimez list.setEmptyView(findViewById(Android.R.id.empty));
de votre code.
Modifiez votre mise en page comme ci-dessous, puis ajoutez EmptyView
automatiquement si la liste ne contient aucun élément:
<?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>
Vous devez définir la vue vide avant de configurer l'adaptateur, si votre MainActivity
n'étend pas ListActivity
.
Essaye ça
list.setEmptyView(findViewById(Android.R.id.empty));
list.setAdapter(adapter);
Désolé pour la réponse tardive!
Autre méthode: Étendez votre activité à partir de ListActivity. Et ajoutez une textview
à votre présentation de liste avec l'ID Android.R.id.empty
Essaye ça
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);
Il y a des réponses correctes, cependant, je pense que c'est la meilleure approche que j'ai trouvée:
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);
Tout ce que @dhawalSodhaParmar a expliqué est correct. Mais il y a une confusion lorsque vous regardez la façon dont la réponse est posée.
<?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>
Supposons que si vous avez déjà une vue en liste et un adaptateur sauvegardant la même chose avec des données. Et en supposant que tout fonctionne correctement, quiconque souhaite implémenter cet écran de liste vide doit démarrer comme suit: Vous pouvez utiliser une disposition linéaire ou une disposition relative, mais de préférence Relative en raison de la flexibilité. Et un textView comme je l'ai écrit.
Étape 2: Accédez à votre fichier Java d’activité et après votre 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));
Ça y est, maintenant courez et vous êtes prêt!