Ajouter et supprimer un TextView de façon dynamique dans Android
J'ai mis en place un FrameLayout qui a un TextView
sur le haut d'une ListView
. Maintenant, dans le MainActivity
, après l'exécution du code, je vérifie si la ListView
est vide. Si elle l'est, je l'affichage de la TextView
, si pas, j'ai supprimer le TextView
.
Le code est comme suit:
Suivant est le main.xml fichier:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/flMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tvAddItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Add some subjects"
android:textSize="20sp" />
<ListView
android:id="@+id/ItemsList"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" />
</FrameLayout>
Dans la classe MainActivity, je ne les suivants:
MainActivity.java
TextView tvNoItem = (TextView) findViewById(R.id.tvAddItem);
ListView subListView = (ListView) findViewById(R.id.itemsList);
FrameLayout fl = (FrameLayout) findViewById(R.id.flMain);
ArrayList<Item> itemsList;
//some code
if(itemsList.isEmpty()) {
fl.addView(tvNoItem);
} else {
fl.removeView(tvNoItem);
}
Maintenant, quand je le lance et j'ai ajouter quelques éléments à la liste, le TextView
(tvNoItem) est supprimée en effet. Mais tout ce que je vois est une liste vide - les éléments de la liste ne sont pas visibles. [BTW, la liste fonctionne bien. Quand j'enlève le TextView
de main.xml
, je peux voir tous les éléments de la liste.] S'il vous plaît aider.
textView.setVisibility(View.GONE)
J'ai essayé aussi. Il fait la même chose. Je reçois un vide de l'activité.
OriginalL'auteur Born Again | 2013-07-09
Vous devez vous connecter pour publier un commentaire.
Pourquoi n'utilisez-vous pas
ListView
's emptyView option.Voici un joli post sur l'affichage d'affichage vide alors que votre carte est vide. Il sera automatiquement affiché lorsque votre Adaptateur source est vide.
Android ListView => setEmptyView()
Vous n'avez pas besoin de vérifier si vous avez de la source de données (
ArrayList
) est vide, android cadre se chargera de tout le masquage et l'affichage de la mise en œuvre.Assurez-vous d'appeler
setEmptyView()
avant d'appelersetAdapter()
sur leListView
.OriginalL'auteur Adil Soomro
OriginalL'auteur Tushar Pandey
Au lieu d'ajouter et de supprimer le TextView essayer de le cacher et de le montrer. L'usage de la Vue.VISIBLE et à l'AFFICHAGE.ALLÉ propriétés:
Espère que ça aide.
OriginalL'auteur Adrián Rodríguez
Au lieu d'Ajouter/Supprimer essayer de Changer la Vissibility état.
OriginalL'auteur Gunaseelan
En fait, il est un des trucs & astuces pour afficher une Vue en lorsque la
listView
est videUn
ViewStub
est invisible, de taille zéro Vue qui peut être utilisé pour paresseusement gonfler disposition de ressources lors de l'exécution.La mise en page@layout/empty
sera gonflé uniquement lorsque leViewStub
visibilité change pourView.VISIBLE
. Une fois le@layout/empty
afficher la hiérarchie est gonflé, il remplace leViewStub
dans la mise en page globale.ViewStub documentation
Source
OriginalL'auteur Sieryuu
1) tout d'Abord, il y a un problème avec votre code. Votre
tvNoItem
est déjà défini dans le xml de mise en page, vous ne pouvez pas ajouter de nouveau. Vous ajoutez uniquement les vues qui sont créées dynamiquement, par exemple,Vous devriez vraiment il suffit de régler votre textview xml avec
android:visibility="gone"
et de le rendre visible quand vous le voulez.2) Utiliser
LinearLayout
au lieu deFrameLayout
si vous voulez le textview sur le dessus de votre liste. Dans votre liste, le changementandroid:layout_height="0dip"
àandroid:layout_height="wrap_content"
, et de supprimer le layout_weight.OriginalL'auteur Neoh
OriginalL'auteur Adam
Avant d'obtenir des points de vue de manière dynamique dans des mises en page de réinitialisation d'abord que
Lignes ci-dessus sont travaillé pour moi pour éviter les doublons ajout dynamique de textviews dans ce linéaires mises en
OriginalL'auteur Venkatesh