2

3 つの異なるレイアウトが 1 つにマージされた、セットアップしようとしているレイアウトがあります。最初の 2 つの項目として 2 つの RelativeLayouts があり、3 番目の項目としてリスト アダプターがあります。MergeAdapter を使用する理由は、ページ全体をスクロールしたいが、レイアウト全体の 2 番目の合計アイテム (2 番目の RelativeLayout) を一番上に固定したいからです。だから私はそれを達成するためにStickyListHeaders Libraryを使用しようとしています。

アイデアは素晴らしいですが、まだあまり広く使われているようには見えません。とにかく、リスト アダプターでオーバーライドする必要があるメソッドが 2 つあります。この場合は MergeAdapter です。NullPointerException が発生し続けますが、コードのどこで発生しているのかわかりません。誰かがライブラリを使用した経験があり、より具体的にはMergeAdapterでライブラリを使用した経験がある場合は、私が間違っていることを教えていただけますか? これが私の MergeAdapter のコードです。

private class ProfileMergeAdapter extends MergeAdapter implements StickyListHeadersAdapter{

    @Override
    public View getHeaderView(int position, View convertView, ViewGroup parent) {

        LayoutInflater nameInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = (RelativeLayout) nameInflater.inflate(R.layout.name_line, null);
        profilePhotoBottom = (ImageView) convertView.findViewById(R.id.profile_pic_bottom);
        TextView userName = (TextView) convertView.findViewById(R.id.userName);
        userName.setText(Utility.userName);
        return convertView;
    }

    @Override
    public long getHeaderId(int position) {
        return 1;
    }

}

そして、ここにlogcatがあります:

01-13 20:39:21.237: W/dalvikvm(4917): threadid=1: thread exiting with uncaught exception (group=0x40de5930)
01-13 20:39:21.245: E/AndroidRuntime(4917): FATAL EXCEPTION: main
01-13 20:39:21.245: E/AndroidRuntime(4917): java.lang.NullPointerException
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:523)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.measure(View.java:15513)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.measureHeader(StickyListHeadersListView.java:242)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.scrollChanged(StickyListHeadersListView.java:284)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.onScroll(StickyListHeadersListView.java:269)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1340)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.ListView.layoutChildren(ListView.java:1753)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.AbsListView.onLayout(AbsListView.java:1994)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.layout(View.java:14003)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.ViewGroup.layout(ViewGroup.java:4375)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.layout(View.java:14003)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.ViewGroup.layout(ViewGroup.java:4375)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.layout(View.java:14003)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.ViewGroup.layout(ViewGroup.java:4375)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.View.layout(View.java:14003)
01-13 20:39:21.245: E/AndroidRuntime(4917):     at android.view.ViewGroup.layout(ViewGroup.java:4375)
4

1 に答える 1

0

返信ありがとうマーク。私はそれを理解しました、ちょっと。リスト項目の 1 つの xml で、layout_width と layout_height に問題があり、それらを変更してもうまくいかなかったと思います。そこで、コードで LayoutParams を使用してアイテムの高さと幅を変更しました。

于 2013-01-15T01:23:34.023 に答える