Définition d'une mise en page à utiliser comme vue vide pour une ListView dans l'adaptateur de casse a zéro élément dans une activité
Comment utiliser une mise en page comme d'affichage vide pour une liste lorsque la carte a zéro éléments?
setEmptyView ne fonctionne pas avec ce code :
public class ZeroItemListActivity extends Activity {
private ArrayList<String> listItems=new ArrayList<String>();
private ListView mMyListView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mMyListView=(ListView) findViewById(R.id.MyListView);
mMyListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,listItems));
LayoutInflater inflator=getLayoutInflater();
View emptyView=inflator.inflate(R.layout.empty_list_item, null);
//Empty view is set here
mMyListView.setEmptyView(emptyView);
}
public void addItem(View v){
listItems.add("list Item");
mMyListView.invalidate();
}
}
Mises en page utilisés : empty_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:id="@+id/Button01" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Empty List,Click to add items"></Button>
</LinearLayout>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<ListView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/MyListView"></ListView>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/AddItemsButton"
android:text="Add Items" android:onClick="addItem"></Button>
</LinearLayout>
source d'informationauteur Suresh Manchi
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple de le faire est de mettre le vide dans la vue de main.xml mise en page:
Puis, dans votre code, définir votre vue vide comme ceci:
La raison que votre code ne fonctionne pas, c'est que la ListView et d'affichage Vide doivent être dans la même vue hiérarchie. Et votre appel à
inflate
passer la valeur null en tant que parent, de sorte qu'ils sont dans les différentes hiérarchies.L'Android Dev tutoriel pour la Liste d'Activité couvre ce sujet:
http://developer.android.com/reference/android/app/ListActivity.html
Essentiellement votre classe étendre ListActivity. Définir votre id de la liste de
@id/android:list
et le "vide de la vue" id@id/android:empty
dans le même fichier XML de mise en page.Espère que cela aide 🙂
Lorsque, en gonflant la vue, vous devez définir le point de vue de parent à être une partie de l'Aménagement de la hiérarchie plutôt que de passer la valeur null dans certains cas.
Remplacer
avec
vous pouvez alors définir la vue vide comme vous l'avez fait avant.