0

いくつかの追加情報を開閉するタグがいくつかあるレイアウトがあります。これらのタグの 1 つは、リストビューを示します。ただし、すべての要素を表示する代わりに、スクロールを有効にして 1 つずつ表示します。リストビューにすべてのアイテムを表示したいだけです。

画面の通常の状態:

http://i39.tinypic.com/2n1baq1.png

タグをクリックした後:

http://i41.tinypic.com/2dvliqq.png

これは、画面の重要な xml です。

        <TextView
            android:id="@+id/tv_school"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/tv_basic"
            android:layout_below="@+id/divider3a"
            android:paddingBottom="10dip"
            android:paddingTop="10dip"
            android:text="School Info"
            android:textColor="#5E5E60"
            android:onClick="animationText"
            android:clickable="true" />

        <ImageView
            android:id="@+id/uparrow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/divider3a"
            android:layout_above="@+id/divider3b"
            android:layout_marginRight="10dip"
            android:layout_marginTop="10dip"
            android:layout_marginBottom="10dip"
            android:src="@drawable/up"
            android:visibility="invisible" />

        <ImageView
            android:id="@+id/downarrow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/divider3a"
            android:layout_above="@+id/divider3b"
            android:layout_marginRight="10dip"
            android:layout_marginTop="10dip"
            android:layout_marginBottom="10dip"
            android:src="@drawable/down" />

        <ImageView
            android:id="@+id/divider3b"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_below="@+id/tv_school"
            android:visibility="invisible"
            android:background="@android:color/darker_gray"/>

        <ListView
            android:id="@+id/lv_schoolinfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/divider3b"
            android:layout_alignLeft="@+id/tv_basic"
            android:paddingBottom="10dip"
            android:paddingTop="10dip"
            android:paddingRight="10dip"
            android:scrollbars="none"
            android:orientation="vertical"
            android:visibility="invisible" />


        <ImageView
            android:id="@+id/divider4"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_below="@+id/tv_school"
            android:background="@android:color/darker_gray"/>

そして、これはアダプターのコードです:

ListView list = (ListView) findViewById(R.id.lv_schoolinfo);
ArrayList<Param> params = l.getSchools();
ArrayList<String> schools = new ArrayList<String>();
for(int i=0; i<params.size(); i++){
    schools.add(params.get(i).getName());
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, schools);
list.setAdapter(adapter);
4

1 に答える 1

0

このクラスをユーティリティとして使用する

public class Utility 
{
    public static void setListViewHeightBasedOnChildren(ListView listView) 
        {
            ListAdapter listAdapter = listView.getAdapter();
            if (listAdapter == null) 
                {
                    return;
                }
            int totalHeight = 0;
            int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
            for (int i = 0; i < listAdapter.getCount(); i++) 
                {
                    View listItem = listAdapter.getView(i, null, listView);
                    listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
                    totalHeight += listItem.getMeasuredHeight();
                }
            ViewGroup.LayoutParams params = listView.getLayoutParams();
            params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1))+20;
            listView.setLayoutParams(params);
            listView.requestLayout();
        }
}

このクラスを次のように使用します

list1.setAdapter(imageAdapteritem);
Utility.setListViewHeightBasedOnChildren(list1);

これにより、リストが拡張され、同時にすべてを表示できる子の合計数になります:)

于 2013-07-08T10:38:56.833 に答える