Question

Je veux que la classe ci-dessous affiche certains TextViews / Buttons / Spinners, ainsi qu'une ListView contenant des données analysées. Cependant, le ListView / Adapter / AddView cause des problèmes. Voici l'erreur que je reçois:

java.lang.unsupportedOperationException: AddView (vue, LayoutParams) n'est pas pris en charge dans AdapterView

J'ai un sentiment à voir avec mes fichiers XML, mais je ne suis pas trop sûr. Voici mon code:

public class StatisticsScreen extends ListActivity{

private List<Message> messages; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.statisticsscreen);

    loadFeed();

    //other textviews and listeners added
}

private void loadFeed() {

    try{
        BaseFeedParser parser = new BaseFeedParser();
        messages = parser.parse();
        List<String> titles = new ArrayList<String>(messages.size());
        for (Message msg : messages){
            titles.add(msg.getTitle());
        }
        ArrayAdapter<String> adapter = 
        new ArrayAdapter<String>(this, R.layout.xmldatarow,titles);

        this.setListAdapter(adapter);           
    } catch (Throwable t){
        Log.e("AndroidNews",t.getMessage(),t);
    }       
}

Mon écran statistique XML:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">

<LinearLayout android:id="@+id/statsviewlayout"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="@color/black">
    //other layouts/textviews/buttons added
    <include  layout="@layout/xmllayout" android:id="@+id/xmllist" />

</LinearLayout>
</ListView>

xmllayout 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">
    <ListView android:id="@+id/xmllist" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/>
    </LinearLayout>

XMLDATAROW est un simple TextView.

ÉDITER:

Ok donc j'ai mis à jour certains fichiers et j'obtiens une erreur d'exception d'exécution:

Votre contenu doit avoir un listview dont l'attribut est 'android.r.id.list'

Voici les fichiers mis à jour:

classer:

setContentView(R.layout.statisticsscreen);    
loadFeed();        
getListView().addHeaderView(View.inflate(this, R.layout.xmllayout, null));

private void loadFeed() {
    try{
        BaseFeedParser parser = new BaseFeedParser();
        messages = parser.parse();
        List<String> titles = new ArrayList<String>(messages.size());
        for (Message msg : messages){
            titles.add(msg.getDate());
        }
        ArrayAdapter<String> adapter = 
            new ArrayAdapter<String>(this, R.layout.xmldatarow,titles);
        this.setListAdapter(adapter);
    } catch (Throwable t){
        Log.e("AndroidNews",t.getMessage(),t);
    }       
}

Mon statScreenLayout STIL a tous les LinearLayouts avec TextViews, etc. et je l'ai supprimé:

<include  layout="@layout/xmllayout" android:id="@+id/xmllist" />

Ensuite, mes deux autres mises en page sont un simple TextView (xmldatarow) et un listView (xmllayout). Donc, juste pour clarifier, il n'y a pas de ListView ni aucun «inclure» dans mon statScreenLayout.

Aucun conseil? Merci

Était-ce utile?

La solution

Vous ne pouvez pas gonfler les vues directement dans une liste de vue comme celle-là. Je pense que tu cherches peut-être ListView's addHeaderView ou addFooterView Méthodes. Assurez-vous de les appeler avant d'appeler setListAdapter.

Edit: pour l'épeler pleinement: en supposant que vous vouliez statsviewlayout en haut de votre liste: ne mettez pas le LinearLayout directement dans le ListView élément (ListViews ne devrait pas avoir d'enfants). Mettez-le dans un séparé Fichier XML (disons, statsview.xml) Et faites quelque chose comme ça dans votre sur-réception:

getListView().addHeaderView(View.inflate(this, R.layout.statsview.xml, null));

Voir aussi ce vieux Android-Beginners Post.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top