ScrollView中的ListView多次调用适配器

时间:2017-05-05 15:02:08

标签: android listview scrollview adapter cardview

以下是示例代码

contact.xml

<ScrollView
android:id="@+id/scroll_view"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
android:layout_marginBottom="55dp">

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

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        style="@style/ContentFrame"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="15dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:id="@+id/msg_listview_frame"
            android:layout_marginTop="10dp">

            <com.android.bundle.helper.NonScrollListView
                android:id="@+id/contact_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:divider="@color/white_lilac"
                android:dividerHeight="1dp"
                android:footerDividersEnabled="false"
                android:scrollbars="none">
            </com.android.bundle.helper.NonScrollListView>

        </LinearLayout>

    </android.support.v7.widget.CardView>

</RelativeLayout>

</ScrollView>

为了使ListView不可滚动,我使用这个自定义类NonScrollListView。

NonScrollListView.java

public class NonScrollListView extends ListView {

public NonScrollListView(Context context) {
    super(context);
}
public NonScrollListView(Context context, AttributeSet attrs) {
    super(context, attrs);
}
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
            Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
    ViewGroup.LayoutParams params = getLayoutParams();
    params.height = getMeasuredHeight();
}
}

适配器被调用了40多次,我尝试了一些StackOverflow的选项,比如更改listview height = fill_parent以及match_parent。

我知道这是一个老问题,我是新手,无法解决这个问题。请帮助解决此问题。

注意:无论如何,ListView必须在ScrollView中。我想让CardView可以滚动。

由于

0 个答案:

没有答案