私は2つのリストを含むレイアウトを持っています。 ScrollView
にリストを入れることができないので、ExpandableListView
を使用して、SimpleExpandableListAdapter
というカスタム(this question)を使用しようとしています。
リストのレイアウト:今すぐレイアウトはリストビューヘッダーとして
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<ExpandableListView android:id="@+id/android:list"
android:layout_width="fill_parent" android:layout_height="fill_parent" />
</LinearLayout>
私は、ヘッダーとして何かを追加しようとすると、トラブルが来ます。私は同じレイアウトを使用する場合は
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
TextView t = new TextView(this);
t.setText("some text");
ll.addView(t);
ImageView i = new ImageView(this);
i.setImageResource(R.drawable.icon);
ll.addView(i);
getExpandableListView().addHeaderView(ll);
を、あるいはアプリケーションがクラッシュしても画面上に表示する前に、コードから1、より単純:私はこのように、コードからレイアウトを作成する場合、それは動作します。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical" android:id="@+id/ll">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="some text"/>
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/icon"/>
</LinearLayout>
とコード:ここで私は上記のリストにヘッダとして追加したいレイアウトだ私は私のレイアウト内のすべてのコンポーネントのlayout_widthまたは高さをいじることを試みた
LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
getExpandableListView().addHeaderView(ll);
、それは動作しません。一番私をバッフルは、それがクラッシュしたときに、DDMSにNullPointerException
setAdapter呼び出し(私は、コードからレイアウトを使用していない、それがうまくアダプタ追加)する場合と言うことです:だから
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.stephan.test/org.stephan.test.ExpandableListViewTest}: java.lang.NullPointerException
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2833)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2854)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.app.ActivityThread.access$2300(ActivityThread.java:136)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2179)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.os.Handler.dispatchMessage(Handler.java:99)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.os.Looper.loop(Looper.java:143)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.app.ActivityThread.main(ActivityThread.java:5068)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at java.lang.reflect.Method.invokeNative(Native Method)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at java.lang.reflect.Method.invoke(Method.java:521)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at dalvik.system.NativeStart.main(Native Method)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): Caused by: java.lang.NullPointerException
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.widget.ListView.clearRecycledState(ListView.java:506)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.widget.ListView.resetList(ListView.java:492)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.widget.ListView.setAdapter(ListView.java:424)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.widget.ExpandableListView.setAdapter(ExpandableListView.java:475)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.app.ExpandableListActivity.setListAdapter(ExpandableListActivity.java:246)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at org.stephan.test.ExpandableListViewTest.onCreate(ExpandableListViewTest.java:80)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1066)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2797)
01-16 01:17:27.447: ERROR/AndroidRuntime(21314): ... 11 more
を、私質問は:私はここで何が間違っていますか?そして、私がこれをもっとうまくやれる方法についてのアドバイスは?
こんにちはペドロ、返信ありがとう。私が達成したいのは、1つのレイアウトで、ExpListViewがあなたが言うIDで正しく設定されていることです。私がしたいのは、リストヘッダとして別のレイアウトを追加することです。私の質問を編集してリストレイアウトも表示します。 – Stephan
他のレイアウトは静的ですか?そうであれば、はるかに簡単な解決法があります。また、あなたの「もの」のリストを表示する必要があるため、または何らかの理由で2つのレイアウトをまとめておく必要があると思うので、拡大レイアウトを使用していますか? –
ヘッダのレイアウトは、受け取ったデータに基づいて動的に埋められるため、静的にすることはできません( '静的'というのは、データをXMLに入れることを意味します)。私は2つの異なるリストを持っているので、拡大レイアウトを使用しています。この方法で、サブグループに異なるレイアウトを使用できると考えていました。その有名なヘッダーをリストでスクロールさせたいので、それをヘッダーと考えるのが自然でした。しかし、私は3日間これで立ち往生していたので、私は提案に開放されています! :) – Stephan