我正在尝试让ListView一次显示一定数量的项目。这就是我现在拥有的。项目和亲戚只是按钮,每个按钮下面都有一个ListView。
我希望它看起来像以下两个项目:
这就是我的布局。任何帮助表示赞赏。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@drawable/background_login">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log out"
android:id="@+id/backToLoginButton"
android:background="@android:color/transparent"
android:textSize="18dp"
android:onClick="onLogoutClick"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"/>
<ImageView
android:layout_width="100dp"
android:layout_height="30dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/logo"
android:id="@+id/logoView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:paddingLeft="10dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@drawable/misc_no_image"
android:id="@+id/profilePhotoView"
android:layout_marginTop="44dp"
android:layout_below="@+id/backToLoginButton"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Full Name"
android:id="@+id/nameTextView"
android:layout_below="@+id/profilePhotoView"
android:paddingTop="10dp"
android:layout_centerHorizontal="true" />
<ImageButton
android:layout_width="40dp"
android:layout_height="40dp"
android:scaleType="fitXY"
android:id="@+id/photoUploadButton"
android:src="@drawable/menu_camera"
android:background="#0000"
android:layout_above="@+id/nameTextView"
android:layout_centerHorizontal="true"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/nameTextView"
android:paddingTop="20dp"
android:id="@+id/scrollView"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" >
<RelativeLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:id="@+id/textLayout">
<ImageButton
android:layout_width="match_parent"
android:layout_height="60dp"
android:scaleType="fitXY"
android:id="@+id/relativesRegisterButton"
android:src="@drawable/menu_detail_header"
android:background="#0000"
android:onClick="onAddRelativesClick"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:paddingTop="20dp"
android:textSize="32sp"
android:text="Relatives"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/textView2" />
<ImageButton
android:layout_width="match_parent"
android:layout_height="60dp"
android:scaleType="fitXY"
android:id="@+id/vehicleRegisterButton"
android:layout_below="@+id/relativeListView"
android:src="@drawable/menu_detail_header"
android:background="#0000"
android:onClick="onAddVehicleClick"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/relativeListView"
android:layout_centerHorizontal="true"
android:paddingTop="20dp"
android:textSize="32sp"
android:text="Vehicles"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/vehicleTextView" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/relativeListView"
android:background="#ffffffff"
android:layout_below="@+id/relativesRegisterButton"
android:layout_centerHorizontal="true" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/vehicleListView"
android:background="#ffffffff"
android:layout_below="@+id/vehicleRegisterButton"
android:layout_centerHorizontal="true" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
这是填充listview时的代码:
private void setVehiclesList(){ String [] userNames = new String [vehicleJSONDataArray.length()];
for(int i = 0; i < vehicleJSONDataArray.length(); i++){
JSONObject relative = vehicleJSONDataArray.optJSONObject(i);
JSONObject relativeUser;
try {
relativeUser = relative.getJSONObject("vehicle");
userNames[i] = relativeUser.getString("brand") + " " + relativeUser.getString("model");
}catch (Exception e){
}
}
ListAdapter vehicleListAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, userNames);
ListView vehicleListView = (ListView) findViewById(R.id.vehicleListView);
vehicleListView.setAdapter(vehicleListAdapter);
答案 0 :(得分:0)
您正在犯一个非常严重的错误:您正在尝试在scrollView中添加ListView。 ListView自动滚动,将滚动放在另一个滚动内是一个非常糟糕的主意。
您需要的只是一个ExpandableListView。
答案 1 :(得分:0)
您可以使用之前建议的可扩展列表视图,但如果您想按照当前的方式对其进行格式化,那么您只需使用一个简单的数组适配器。
//create a string array with the list entries
String[] items = new String[2];
items[0] = "Bread";
items[1] = "Milk";
//array adapter using the array above
ArrayAdapter<String> itemsAdapter =
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
//attach it to whatever listview here
ListView listView = (ListView) findViewById(R.id.lvItems);
listView.setAdapter(itemsAdapter);
答案 2 :(得分:0)
您可以将高度值定义为静态,而不是{{1}},也可以在滚动视图中定义一些dp,以使更多项目可见。