ExpandableListView 中的多个 Textview Android
Multiple Textviews in ExpandableListView Android
我目前有一个可以正常填充的可扩展列表视图。但是,当子视图正在填充时,它会为每个条目创建单独的视图和行。我想在视图中有一个视图和多个文本视图,以及一个我将要添加的按钮。数据是从 HASHMAP 填充的。我已经尝试了很多东西,但无法让多个文本视图在列表视图中正确填充。
所有数据均来自此哈希图:
private HashMap<String, List<String>> _deviceDetails;
这是我的自定义适配器的获取子视图的方法。
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
txtListChild.setText(childText);
return convertView;
}
这是我现在拥有的和我想做的事情的合影。
我需要在一行内突出显示数据,这样我就可以在没有一堆行的情况下添加按钮等。我真的不知道如何正确地做到这一点。
我是个白痴。我想到了。谢谢@Krupal,你给我指明了正确的方向。如果你把任何东西作为答案,我会 select 你因为你让我思考了正确的方法。
所以我最终在这里做的是我创建了一个自定义列表适配器。为了简短起见,我不会添加整个 class。关键是使用将适配器设置为仅 return 个 child。然后在 returned 的 child 中(下面的 XML),我添加了所有需要的字段。所以现在当我扩展列表时,只有一个 child 是可见的。同样在我的 getChildView() 中,我为 children 的布局定义了所有需要的条目。不知道这是否是完美的方法,但可以很好地满足我的需求。
这是我用我的数据实际配置 child 的地方。
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, 0);
final String childTextSecond = (String) getChild(groupPosition, 1);
final String childTextThird = (String) getChild(groupPosition, 2);
final String deviceName = (String) getChild(groupPosition, 3);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
TextView txtListChildTwo = (TextView) convertView
.findViewById(R.id.lblListItemTwo);
TextView txtListChildThree = (TextView) convertView
.findViewById(R.id.lblListItemThree);
//rest of logic!
}
将 children 计数设置为 1
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
XML child 元素的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000">
<RelativeLayout
android:layout_width="340dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|right"
android:background="#f9fcff">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:background="#4d86ff">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Medium"
android:layout_marginLeft="10dp"
android:text="Large Text"
android:id="@+id/lblListItem"
android:textColor="#ffffff"
android:layout_alignTop="@+id/textView5"
android:layout_toRightOf="@+id/textView5"
android:layout_toEndOf="@+id/textView5" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Device ID: "
android:id="@+id/textView5"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textColor="#ffffff" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="Tags"
android:id="@+id/btnTags"
android:background="#ffffff"
android:singleLine="true"
android:layout_alignTop="@+id/lblListItem"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="15dp"
android:layout_marginEnd="15dp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Status: "
android:id="@+id/textView6"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textColor="#ffffff" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Large Text"
android:id="@+id/lblListItemTwo"
android:textColor="#ffffff"
android:layout_alignTop="@+id/textView6"
android:layout_toRightOf="@+id/textView6"
android:layout_toEndOf="@+id/textView6" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginBottom="10dp"
android:textColor="#ffffff"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Description: "
android:id="@+id/textView7"
android:layout_marginStart="15dp"
android:layout_alignTop="@+id/lblListItemThree"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="6dp"
android:layout_marginRight="13dp"
android:layout_marginBottom="10dp"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Large Text"
android:id="@+id/lblListItemThree"
android:textColor="#ffffff"
android:layout_marginStart="39dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/textView7"
android:layout_toEndOf="@+id/textView7" />
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
我目前有一个可以正常填充的可扩展列表视图。但是,当子视图正在填充时,它会为每个条目创建单独的视图和行。我想在视图中有一个视图和多个文本视图,以及一个我将要添加的按钮。数据是从 HASHMAP 填充的。我已经尝试了很多东西,但无法让多个文本视图在列表视图中正确填充。 所有数据均来自此哈希图:
private HashMap<String, List<String>> _deviceDetails;
这是我的自定义适配器的获取子视图的方法。
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
txtListChild.setText(childText);
return convertView;
}
这是我现在拥有的和我想做的事情的合影。
我需要在一行内突出显示数据,这样我就可以在没有一堆行的情况下添加按钮等。我真的不知道如何正确地做到这一点。
我是个白痴。我想到了。谢谢@Krupal,你给我指明了正确的方向。如果你把任何东西作为答案,我会 select 你因为你让我思考了正确的方法。
所以我最终在这里做的是我创建了一个自定义列表适配器。为了简短起见,我不会添加整个 class。关键是使用将适配器设置为仅 return 个 child。然后在 returned 的 child 中(下面的 XML),我添加了所有需要的字段。所以现在当我扩展列表时,只有一个 child 是可见的。同样在我的 getChildView() 中,我为 children 的布局定义了所有需要的条目。不知道这是否是完美的方法,但可以很好地满足我的需求。
这是我用我的数据实际配置 child 的地方。
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, 0);
final String childTextSecond = (String) getChild(groupPosition, 1);
final String childTextThird = (String) getChild(groupPosition, 2);
final String deviceName = (String) getChild(groupPosition, 3);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
TextView txtListChildTwo = (TextView) convertView
.findViewById(R.id.lblListItemTwo);
TextView txtListChildThree = (TextView) convertView
.findViewById(R.id.lblListItemThree);
//rest of logic!
}
将 children 计数设置为 1
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
XML child 元素的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000">
<RelativeLayout
android:layout_width="340dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|right"
android:background="#f9fcff">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:background="#4d86ff">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Medium"
android:layout_marginLeft="10dp"
android:text="Large Text"
android:id="@+id/lblListItem"
android:textColor="#ffffff"
android:layout_alignTop="@+id/textView5"
android:layout_toRightOf="@+id/textView5"
android:layout_toEndOf="@+id/textView5" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Device ID: "
android:id="@+id/textView5"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textColor="#ffffff" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="Tags"
android:id="@+id/btnTags"
android:background="#ffffff"
android:singleLine="true"
android:layout_alignTop="@+id/lblListItem"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="15dp"
android:layout_marginEnd="15dp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Status: "
android:id="@+id/textView6"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textColor="#ffffff" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Large Text"
android:id="@+id/lblListItemTwo"
android:textColor="#ffffff"
android:layout_alignTop="@+id/textView6"
android:layout_toRightOf="@+id/textView6"
android:layout_toEndOf="@+id/textView6" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginBottom="10dp"
android:textColor="#ffffff"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Description: "
android:id="@+id/textView7"
android:layout_marginStart="15dp"
android:layout_alignTop="@+id/lblListItemThree"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="6dp"
android:layout_marginRight="13dp"
android:layout_marginBottom="10dp"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="Large Text"
android:id="@+id/lblListItemThree"
android:textColor="#ffffff"
android:layout_marginStart="39dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/textView7"
android:layout_toEndOf="@+id/textView7" />
</RelativeLayout>
</LinearLayout>
</RelativeLayout>