0

AndroidでHeaderViewをListViewに適切に追加する方法を知っている人はいますか? これは私が持っているものです:

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View inflatedView = inflater.inflate(R.layout.adapter_post_note, commentsListView, false);

その後、画像リソースやテキストを設定して、すでに adapter_post_note レイアウトの一部である ImageView といくつかの TextView をセットアップします。次に、ここに HeaderView を追加します

commentsListView.addHeaderView(inflatedView);
commentsAdapter = new CommentsAdapter(this, post.getComments(), post);
commentsListView.setAdapter(commentsAdapter);

アダプターは BaseAdapter を拡張するカスタム アダプターであり、コンテキスト、ListView に入力するリスト、および何らかの理由で「投稿」を渡しますが、問題ではありません。

ここに私が得ているエラーがあります

07-16 12:39:58.858: E/AndroidRuntime(1562): FATAL EXCEPTION: main
07-16 12:39:58.858: E/AndroidRuntime(1562): java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:360)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.view.View.measure(View.java:8372)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.view.View.measure(View.java:8372)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.view.View.measure(View.java:8372)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.view.ViewRoot.performTraversals(ViewRoot.java:844)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1868)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.os.Looper.loop(Looper.java:130)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at android.app.ActivityThread.main(ActivityThread.java:3701)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at java.lang.reflect.Method.invokeNative(Native Method)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at java.lang.reflect.Method.invoke(Method.java:507)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
07-16 12:39:58.858: E/AndroidRuntime(1562):     at dalvik.system.NativeStart.main(Native Method)

inflatedView のレイアウト パラメータを ListView.LayoutParams、FrameLayout.LayoutParams、AbsListView.LayoutParams に設定しようとしましたが、何も機能しません。ヘッダーとして inflatedView を追加しているように思えますが、後で画面を無効にしようとすると、ListView の子状態を調べてリサイクルしようとして失敗します。考え?

また、私が試したもう1つのことは

View.inflate(this, R.layout.adapter_post_note, null);

しかし、それでも機能しません

4

1 に答える 1

1

親ビューを null に設定すると、準備完了です。ビューの親を参照する必要はありません。膨らませてメソッドに渡すだけです。

于 2012-07-16T18:12:33.493 に答える