1

こんにちは、マージ アダプタにビューを追加しようとしていますが、その方法がよくわかりません。2 つのリストの間にヘッダー バーを追加したいと考えています。これまでのところ、1 つのリストにデータを入力する 3 つの arrayadapters があり、それぞれの間にヘッダーを追加したいと考えています。ヘッダーに使用したい .xml レイアウトがあるか、プログラムでレイアウトを記述した方がよいでしょうか。

これまでに試したことは次のとおりですが、スクロールするとエラーが発生し続け、アプリがクラッシュします。これを学ぶことは本当に役立つと思うので、これを十分に明確にしたことを願っています。

arrayAdapter = new ArrayAdapter<String>(this, R.layout.single_item, newsList);
    arrayAdapter2 = new ArrayAdapter<String>(this, R.layout.single_item, newsList2);
    arrayAdapter3 = new ArrayAdapter<String>(this, R.layout.single_item, newsList3);


     RelativeLayout layout = new RelativeLayout(this);
        RelativeLayout.LayoutParams labelLayoutParams = new RelativeLayout.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
        layout.setLayoutParams(labelLayoutParams);

        ImageView mImage = new ImageView(this);
        mImage.setBackgroundResource(R.drawable.titlerect);        
        //layout.addView(mImage,labelLayoutParams);





     //RelativeLayout rc = (RelativeLayout) findViewById(R.id.redcelllayout);
    LayoutInflater inflater = 
                   (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     View Header = inflater.inflate(R.layout.redcell, layout, true);



    setListAdapter (arrayAdapter);

       ListView list = getListView();
       list.setTextFilterEnabled(true);

        adapter = new MergeAdapter();
        adapter.addAdapter(arrayAdapter);
        adapter.addView(mImage);
        adapter.addAdapter(arrayAdapter2);

        adapter.addAdapter(arrayAdapter3);
        setListAdapter(adapter);

    }   

ヘッダー バーの xml レイアウトを次に示します。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
     android:id="@+id/redcelllayout" >



    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:src="@drawable/titlerect" />

    <TextView
        android:id="@+id/redheadertext"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:gravity="left"
        android:paddingLeft="15dp"
        android:paddingTop="3dp"
        android:textColor="@color/white"
        android:textSize="15dp"
        android:textStyle="bold"/>

また、エラーが発生します

05-11 09:51:06.187: E/AndroidRuntime(8598): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
05-11 09:51:06.187: E/AndroidRuntime(8598):     at android.widget.ListView.setupChild(ListView.java:1834)
05-11 09:51:06.187: E/AndroidRuntime(8598):     at android.widget.ListView.makeAndAddView(ListView.java:1803)
05-11 09:51:06.187: E/AndroidRuntime(8598):     at android.widget.ListView.fillDown(ListView.java:670)
05-11 09:51:06.187: E/AndroidRuntime(8598):     at android.widget.ListView.fillGap(ListView.java:641)
4

2 に答える 2

0

これを試して

    View headerView = View.inflate(this, R.layout.layout_name, null);
    lv.addHeaderView(headerView);

lv はリストビューです。

アダプターを設定する前にヘッダーを追加してください。

于 2012-05-11T10:05:03.950 に答える
0

使ってください

RelativeLayout.LayoutParams labelLayoutParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams..FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);

それ以外の

RelativeLayout.LayoutParams labelLayoutParams = new RelativeLayout.LayoutParams(
            LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);

これにより、スタックトレースに示されているように ClassCastException が発生しています

于 2012-05-11T09:59:07.600 に答える