Android - ClassCastException - sur LayoutParams de LinearLayout à AbsListView
J'ai une liste de l'adaptateur que j'essaie de définir un xml personnalisé pour (item.xml)
si je n'utilise pas l'inflation (directe, identification de l'textview grâce à un contexte d'application), il fonctionne parfaitement.. mais alors mon listview ne peut pas être sur le thème de..
public View getView(int position, View convertView, ViewGroup parent) {
//System.gc();
TextView tv;
LayoutInflater inflater = getLayoutInflater();
View row = View.inflate(mContext,R.layout.item,null); //.inflate(R.layout.item, parent, false); doesnt work either..
String id = null;
if (convertView == null) {
tv = (TextView) row.findViewById(R.id.TextView01);;
} else
tv = (TextView) convertView;
[..]
dans logcat
je suis arriver..
07-15 19:45:51.710: ERROR/AndroidRuntime(20185): FATAL EXCEPTION: main
java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
at android.widget.ListView.setupChild(ListView.java:1827)
at android.widget.ListView.makeAndAddView(ListView.java:1794)
at android.widget.ListView.fillDown(ListView.java:688)
mon item.xml le fichier se présente comme suit:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:gravity="left|center"
android:layout_width="fill_parent"
android:paddingBottom="15px"
android:background="#fff200"
android:paddingTop="15px"
android:paddingLeft="15px">
<TextView android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40px"
android:textStyle="bold"
android:layout_marginLeft="20px"
android:textColor="#0099CC">
</TextView>
</LinearLayout>
source d'informationauteur Wingston Sharon
Vous devez vous connecter pour publier un commentaire.
Le problème est causé par emballage de la commande que vous êtes de retour à partir de la carte dans un linearlayout. Perdre le LinearLayout à partir de votre fichier de mise en page (il suffit de mettre la TextView comme la racine) et je pense que cela devrait fonctionner.
Pour développer un peu: vous êtes à la création de votre contrôle, puis de l'ajouter dans un LinearLayout. À ce stade, un LinearLayout$LayoutParams objet est alloué pour elle et les définir comme de sa mise en page params. Vous puis tirez vers l'extérieur du linéaire de la mise en page et le mettre dans votre liste de point de vue, qui ne comprend pas le LinearLayout$LayoutParams.
Sinon, retour de ligne de getView plutôt que, comme je présume que vous êtes en train de faire, comme vous l'avez coupé la ligne de retour de votre cité code) de retour d'une télévision.
(Un autre, sans rapport avec l'allusion: vous êtes gonflant de votre mise en page, puis de le jeter quand convertView != null; ce qui entraîne une dégradation des performances de défilement sur les machines lentes. Seulement effectuer l'inflation si vous êtes réellement besoin.)
vous êtes probablement de retourner la tv au lieu de la ligne
Avez-vous essayez d'utiliser la mise en page inflater pour gonfler le xml statiques mise en page? Comme ceci:
Une bonne façon de travailler avec ArrayAdapter de getView pour votre code est: est-ce
Aussi, ne pas manuellement les ordures s'accumulent dans votre code si possible.
C'est la bonne:
J'ai eu le même problème et j'ai utilisé ces codes :