質問

以下のクラスでいくつかのテキストビュー/ボタン/スピナーと、解析されたデータを含むリストビューを表示したいと考えています。ただし、listview/adapter/addview はいくつかの問題を引き起こしています。私が得ているエラーは次のとおりです。

java.lang.UnsupportedOperationException:addView(View, LayoutParams) は、AdapterView ではサポートされていません

XML ファイルに関係があるような気がしますが、よくわかりません。私のコードは次のとおりです。

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);
    }       
}

私の統計画面の 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>

xmlレイアウト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 は単純な textView です。

編集:

さて、いくつかのファイルを更新しましたが、実行時例外エラーが発生しました。

コンテンツには、属性が「android.R.id.list」である ListView が必要です。

更新されたファイルは次のとおりです。

クラス:

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);
    }       
}

私の統計スクリーンレイアウトには、テキストビューなどのリニアレイアウトがすべて含まれています。そして私はそこからこれを削除しました:

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

次に、他の 2 つのレイアウトは、単純な textview(xmldatarow) と listview(xmllayout) です。したがって、明確にするために、私の統計画面レイアウトにはリストビューも「インクルード」もありません。

何かアドバイス?ありがとう

役に立ちましたか?

解決

このようにビューをリストビューに直接インフレートすることはできません。たぶん探していると思います ListViewさんの addHeaderView または addFooterView 方法。電話をかける前に必ず電話してください setListAdapter.

編集:それを完全に詳しく説明すると、次のようになります。あなたが望んでいたと仮定すると statsviewlayout リストの一番上に:を置かないでください LinearLayout 直接 ListView 要素 (ListViews 子供を持つべきではない)。に入れてください XML ファイル (たとえば、 statsview.xml) そして、onCreate で次のようなことを行います。

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

こちらの古いものもご覧ください アンドロイド初心者の投稿.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top