嗨,在下面的代码中,我实现了一个可扩展的列表视图。列表包含 3 个列表标题名称,如基本测试详细信息、医疗报告、医疗图像。有了这个,我可以垂直查看标题名称。单击 header1 想要显示 linear_profile 表单,我期望我正在显示表单。但我的问题是表单的位置显示在三个标题的末尾。但是要在header 1下面显示,然后header2和header 3的名字就应该来了。
谁能帮助我哪里出错了?
main.xml
<LinearLayout
android:id="@+id/medical_history"
android:layout_height="650dp"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:orientation="vertical"
android:visibility="gone">
<ExpandableListView
android:divider="@android:color/darker_gray"
android:dividerHeight="0.5dp"
android:groupIndicator="@drawable/settings_selector"
android:id="@+id/medial_expand"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:transcriptMode="disabled" />
<LinearLayout
android:id="@+id/basic_details"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical"
android:visibility="gone">
<com.google.android.material.textfield.TextInputLayout
android:hint="@string/temperature"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:padding="10dp"
android:paddingLeft="16dp"
android:textColorHint="@color/theme">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/temperature"
android:imeOptions="actionNext"
android:inputType="number"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:singleLine="true"
android:textColor="@color/theme"
android:theme="@style/myTextInputLabel" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:hint="@string/blood_pressure"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:padding="10dp"
android:paddingLeft="16dp"
android:textColorHint="@color/theme">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/blood_pressure"
android:inputType="text"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:singleLine="true"
android:textColor="@color/theme"
android:theme="@style/myTextInputLabel" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:hint="Blood Glucose"
android:id="@+id/blood_glucose"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:padding="10dp"
android:textColorHint="@color/theme"
android:textSize="16sp" />
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal"
android:padding="10dp"
android:paddingLeft="16dp"
android:weightSum="2">
<com.google.android.material.textfield.TextInputLayout
android:hint="@string/fasting"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_width="0dp"
android:textColorHint="@color/theme">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/fasting"
android:imeOptions="actionNext"
android:inputType="text"
android:layout_height="wrap_content"
android:layout_width="200dp"
android:singleLine="true"
android:textColor="@color/theme"
android:theme="@style/myTextInputLabel" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:hint="@string/after_food"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_width="0dp"
android:textColorHint="@color/theme">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/after_food"
android:imeOptions="actionNext"
android:inputType="text"
android:layout_height="wrap_content"
android:layout_width="200dp"
android:singleLine="true"
android:textColor="@color/theme"
android:theme="@style/myTextInputLabel" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
</LinearLayout>
<Button
android:background="@drawable/border"
android:backgroundTint="@color/theme"
android:gravity="center"
android:layout_gravity="right"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_width="wrap_content"
android:padding="15dp"
android:text="Save and Next"
android:textColor="@color/white"></Button>
</LinearLayout>
Fragment.java
ExpandableListView medial_expand=(ExpandableListView)convertView. findViewById(R.id.medial_expand);
prepareListData();
ExpanableAllergiesMedications mMenuAdapter = new ExpanableAllergiesMedications(mContext, listDataHeader, listDataChild, medial_expand);
medial_expand.setAdapter (mMenuAdapter);
medial_expand.setOnGroupClickListener (new android.widget.ExpandableListView.OnGroupClickListener ( ) {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
Fragment fragment = null;
switch (groupPosition) {
case 0:
linear_basicdetials.setVisibility(View.VISIBLE);
Toast.makeText(mContext,"Basic test details",Toast.LENGTH_LONG).show();
break;
default:
break;
}
return false;
}
});
prepareListData 方法
private void prepareListData() {
listDataHeader = new ArrayList<ExpandedMenuModel>();
listDataChild = new HashMap<ExpandedMenuModel, List<String>>( );
ExpandedMenuModel item0 = new ExpandedMenuModel ( );
item0.setIconName ("BASIC TEST DETAILS");
listDataHeader.add (item0);
List<String> heading0 = new ArrayList<String>( );
ExpandedMenuModel item1 = new ExpandedMenuModel ( );
item1.setIconName ("MEDICAL REPORTS");
listDataHeader.add (item1);
List<String> heading1 = new ArrayList<String>( );
//
ExpandedMenuModel item2 = new ExpandedMenuModel ( );
item2.setIconName ("MEDICAL IMAGES");
listDataHeader.add (item2);
List<String> heading2 = new ArrayList<String>( );
listDataChild.put (listDataHeader.get (0), heading0);
listDataChild.put (listDataHeader.get (1), heading1);
listDataChild.put (listDataHeader.get (2), heading2);
}