Pourquoi mon ListView ne montre rien?
J'ai un très de base ListView dans android et avait un très de base de l'adaptateur. Mon problème est que l'affichage de la liste ne pas montrer quoi que ce soit, indépendamment de la carte et le notifyDataSetChanged();
Voici mon code:
XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:text="@string/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></TextView>
<ListView android:id="@+id/selectView"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</ListView>
</RelativeLayout>
Le code d'Activité:
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import com.androidcourse.phonemapper.R;
import com.androidcourse.phonemapper.model.SelectViewAdapter;
public class SelectActivity extends Activity {
private ListView mListView;
private SelectViewAdapter mAdapter;
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setContentView(R.layout.select_activity);
initializeListView();
}
private void initializeListView() {
mListView = (ListView) findViewById(R.id.selectView);
mAdapter = new SelectViewAdapter(this);
mListView.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
}
@Override
public void onResume() {
super.onResume();
}
}
Et le code d'Adaptateur:
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class SelectViewAdapter extends BaseAdapter {
private Context mContext;
private TextView mMockTextView;
public SelectViewAdapter(Context cnt) {
mContext = cnt;
mMockTextView = new TextView(mContext);
mMockTextView.setText("Test text");
mMockTextView.setBackgroundColor(Color.CYAN);
}
@Override
public int getCount() {
return 3;
}
@Override
public Object getItem(int position) {
return mMockTextView;
}
@Override
public long getItemId(int position) {
return 3;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return mMockTextView;
}
}
Le problème est que rien n'est indiqué sur l'écran. Un écran noir (et le premier texte de la vue à partir du XML) est tout ce que je reçois. Je ne vois pas l'mockTextView et son texte. Apparemment, je suis en train de faire quelque chose de tout à fait tort, mais je ne peux comprendre ce que.
source d'informationauteur George
Vous devez vous connecter pour publier un commentaire.
Quelques choses je pense.
Tout d'abord, Votre RelativeLayout n'a pas de positionnement relatif de l'information. Je suppose que vous vouliez mettre cela dans un LinearLayout à l'orientation définie à la verticale de ce que vous décrivez. Ma conjecture est que la liste n'est pas établi car il n'est pas encore ancré dans le courant RelativeLayout. Si vous restez avec le RelativeLayout, assurez-vous de mettre un id sur le app_name TextView et la position de la liste en vertu de la via layout_below.
LinearLayout Solution
RelativeLayout Solution:
Ensuite, votre getView() renvoie la même textView pour tous les 3 indices. Ce n'est pas un problème pour afficher le même point de vue sur plusieurs indices cependant, avec une taille d'une liste de trois, je parie que l'écran peut afficher toutes les trois en même temps. Et depuis un point de Vue ne peut être dans plus d'un poste à un moment, j'ai vraiment attendre de cet échec donc je doute qu'il est même arriver à ce code encore. Essayez de créer un nouveau TextView pour chaque getView(). Aussi votre MockTextView n'a pas de mise en page params propre. Afin de l'aménager dans un listView cellule pourrait ne pas être là non plus. Vous pouvez donc lui donner les paramètres de type AbsListView.LayoutParams(WRAP_CONTENT, WRAP_CONTENT). Encore, même si je m'attends à ce à l'erreur si elle a obtenu le code d'origine.
getView() ranger:
Et, enfin, la wrap_content hauteur de votre liste peut parfois être problématique. Je ne suis pas au courant de tous les scénarios. Si vous avez fini par changer pour un LinearLayout essayez de régler votre layout_height de la vue de liste de 0 et de définir ensuite le layout_weight=1. Cela force le linéaire de mise en page pour le gonfler en plus d'espace.
LinearLayout De Poids Solution:
J'ai été en utilisant l'exemple de Liaison de Données à partir du livre Bonjour Android par Ed Burnette (grand livre).
J'ai changé la disposition des éléments à partir d'Un RelativeLayout à un LinearLayout; cependant, je n'ai pas à ajouter un sens de l'orientation lorsque j'ai fait le changement.
Une fois j'ai ajouté android:orientation="vertical" tout a bien fonctionné.
Deux heures de ma vie sur celui-ci.
Alors qu'il n'a pas répondu à cette question, un problème typique est de gonfler comme une ressource d'adaptateur d'une mise en page basée sur un parent LinearLayout avec hauteur=wrap_content et chaque LinearLayout élément avec hauteur=fill_parent.
Comme dans
Alors qu'il s'affiche bien dans Eclipse, chaque ligne se termine avec hauteur=0. Cela peut être résolu en réglant la hauteur=wrap_content pour l'un de l'élément enfant