Java 如何在ExpandableListView中创建两个或三个文本视图?

Java 如何在ExpandableListView中创建两个或三个文本视图?,java,android,xml,expandablelistview,Java,Android,Xml,Expandablelistview,我正在为android创建一个程序,在应用程序中,我使用了ExpandableListview和BaseExpandableListViewAdapter,默认情况下,此适配器使用一个TextView,我想在子listItem上创建一些(两个或三个)TextView,请帮我编写代码,在活动中写什么 XML布局listitem子文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:

我正在为android创建一个程序,在应用程序中,我使用了ExpandableListview和BaseExpandableListViewAdapter,默认情况下,此适配器使用一个TextView,我想在子listItem上创建一些(两个或三个)TextView,请帮我编写代码,在活动中写什么

XML布局listitem子文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:orientation="vertical">

        <TextView
            android:id="@+id/lblListItem"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:paddingTop="3dp"
            android:paddingBottom="3dp"
            android:textSize="15dip" />

        <TextView
            android:id="@+id/lblListItem2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:paddingTop="3dp"
            android:paddingBottom="3dp"
            android:textSize="15dip" />
        </LinearLayout>
    </androidx.cardview.widget.CardView>
</LinearLayout>
此时准备数据列表:

private void prepareListData() {
        listDataHeader = new ArrayList<>();
        listDataChild = new HashMap<>();
        listDataHeader.add(getResources().getString(R.string.bstart_ver));
        listDataHeader.add(getResources().getString(R.string.bstart_op));
        List<String> Header1 = new ArrayList<>();
        Header1.add(getResources().getString(R.string.bstart_string1));
        Header1.add(getResources().getString(R.string.bstart_string2));
        Header1.add(getResources().getString(R.string.bstart_string3));
        List<String> Header2 = new ArrayList<>();
        Header2.add(getResources().getString(R.string.bstart_string4));
        Header2.add(getResources().getString(R.string.bstart_string5));
        Header2.add(getResources().getString(R.string.bstart_string6));
        Header2.add(getResources().getString(R.string.bstart_string7));
        Header2.add(getResources().getString(R.string.bstart_string8));
        listDataChild.put(listDataHeader.get(0), Header1);
        listDataChild.put(listDataHeader.get(1), Header2);

    }
private void prepareListData(){
listDataHeader=新的ArrayList();
listDataChild=newHashMap();
添加(getResources().getString(R.string.bstart_ver));
添加(getResources().getString(R.string.bstart_op));
列表标题1=新的ArrayList();
Header1.add(getResources().getString(R.string.bstart_string1));
Header1.add(getResources().getString(R.string.bstart_string2));
Header1.add(getResources().getString(R.string.bstart_string3));
列表标题2=新的ArrayList();
Header2.add(getResources().getString(R.string.bstart_string4));
Header2.add(getResources().getString(R.string.bstart_string5));
Header2.add(getResources().getString(R.string.bstart_string6));
Header2.add(getResources().getString(R.string.bstart_string7));
Header2.add(getResources().getString(R.string.bstart_string8));
listDataChild.put(listDataHeader.get(0),Header1);
listDataChild.put(listDataHeader.get(1),Header2);
}
设置适配器:

    private ExpandableListAdapter listAdapter;
    private ExpandableListView expListView;
    private List<String> listDataHeader;
    private HashMap<String, List<String>> listDataChild;

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View cpf = inflater.inflate(R.layout.checklist_bstart, container, false);
        expListView = cpf.findViewById(R.id.lv_bstart);
        prepareListData();
        listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild);
        expListView.setAdapter(listAdapter);
        return cpf;
    }
私有可扩展listAdapter listAdapter;
私有可扩展列表视图expListView;
私有列表listDataHeader;
私有HashMap listDataChild;
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、Bundle savedInstanceState){
查看cpf=充气机。充气(R.layout.checklist\u b开始,容器,错误);
expListView=cpf.findviewbyd(R.id.lv\u bstart);
prepareListData();
listAdapter=新的ExpandableListAdapter(getActivity(),listDataHeader,listDataChild);
expListView.setAdapter(listAdapter);
归还中央公积金;
}

最简单的方法是让适配器获取更多列表

因此,准备数据列表和setAdapter,如下所示:

private ExpandableListAdapter listAdapter;
private ExpandableListView expListView;
private List<String> listDataHeader;
private HashMap<String, List<String>> listDataChild1, listDataChild2;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View cpf = inflater.inflate(R.layout.checklist_bstart, container, false);
    expListView = cpf.findViewById(R.id.lv_bstart);
    prepareListData();
    listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild1, listDataChild2);
    expListView.setAdapter(listAdapter);
    return cpf;
}

private void prepareListData() {
    listDataHeader = new ArrayList<>();
    listDataChild1 = new HashMap<>();
    listDataHeader.add(getResources().getString(R.string.bstart_ver));
    listDataHeader.add(getResources().getString(R.string.bstart_op));
    List<String> Header1 = new ArrayList<>();
    Header1.add(getResources().getString(R.string.bstart_string1));
    Header1.add(getResources().getString(R.string.bstart_string2));
    Header1.add(getResources().getString(R.string.bstart_string3));
    List<String> Header12 = new ArrayList<>();
    Header12.add(getResources().getString(R.string.bstart_string4));
    Header12.add(getResources().getString(R.string.bstart_string5));
    Header12.add(getResources().getString(R.string.bstart_string6));

    List<String> Header2 = new ArrayList<>();
    Header2.add(getResources().getString(R.string.bstart_string4));
    Header2.add(getResources().getString(R.string.bstart_string5));
    Header2.add(getResources().getString(R.string.bstart_string6));
    Header2.add(getResources().getString(R.string.bstart_string7));
    Header2.add(getResources().getString(R.string.bstart_string8));
    List<String> Header22 = new ArrayList<>();
    Header22.add(getResources().getString(R.string.bstart_string1));
    Header22.add(getResources().getString(R.string.bstart_string2));
    Header22.add(getResources().getString(R.string.bstart_string3));
    Header22.add(getResources().getString(R.string.bstart_string7));
    Header22.add(getResources().getString(R.string.bstart_string8));

    listDataChild1.put(listDataHeader.get(0), Header1);
    listDataChild1.put(listDataHeader.get(1), Header2);
    listDataChild2.put(listDataHeader.get(0), Header1);
    listDataChild2.put(listDataHeader.get(1), Header2);
}
Context _context;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild1, listDataChild2;

public ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listDataChild1,
                             HashMap<String, List<String>> listDataChild2) {
    _context = context;
    this.listDataHeader = listDataHeader;
    this.listDataChild1 = listDataChild1;
    this.listDataChild2 = listDataChild2;
}

@Override
public View getChildView(int groupPosition, int childPosition, boolean b, View convertView, ViewGroup viewGroup) {
    String childText = (String) getChild(groupPosition, childPosition);
    String childText2 = listDataChild2.get(getGroup(groupPosition)).get(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);
    TextView txtListChild2 = (TextView) convertView.findViewById(R.id.lblListItem2);
    txtListChild2.setText(childText2);
    return convertView;
}
私有可扩展listAdapter listAdapter;
私有可扩展列表视图expListView;
私有列表listDataHeader;
私有HashMap listDataChild1、listDataChild2;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
查看cpf=充气机。充气(R.layout.checklist\u b开始,容器,错误);
expListView=cpf.findviewbyd(R.id.lv\u bstart);
prepareListData();
listAdapter=新的ExpandableListAdapter(getActivity(),listDataHeader,listDataChild1,listDataChild2);
expListView.setAdapter(listAdapter);
归还中央公积金;
}
私有void prepareListData(){
listDataHeader=新的ArrayList();
listDataChild1=新HashMap();
添加(getResources().getString(R.string.bstart_ver));
添加(getResources().getString(R.string.bstart_op));
列表标题1=新的ArrayList();
Header1.add(getResources().getString(R.string.bstart_string1));
Header1.add(getResources().getString(R.string.bstart_string2));
Header1.add(getResources().getString(R.string.bstart_string3));
列表标题12=新的ArrayList();
Header12.add(getResources().getString(R.string.bstart_string4));
Header12.add(getResources().getString(R.string.bstart_string5));
Header12.add(getResources().getString(R.string.bstart_string6));
列表标题2=新的ArrayList();
Header2.add(getResources().getString(R.string.bstart_string4));
Header2.add(getResources().getString(R.string.bstart_string5));
Header2.add(getResources().getString(R.string.bstart_string6));
Header2.add(getResources().getString(R.string.bstart_string7));
Header2.add(getResources().getString(R.string.bstart_string8));
列表标题22=新的ArrayList();
Header22.add(getResources().getString(R.string.bstart_string1));
Header22.add(getResources().getString(R.string.bstart_string2));
Header22.add(getResources().getString(R.string.bstart_string3));
Header22.add(getResources().getString(R.string.bstart_string7));
Header22.add(getResources().getString(R.string.bstart_string8));
listDataChild1.put(listDataHeader.get(0),Header1);
listDataChild1.put(listDataHeader.get(1),Header2);
listDataChild2.put(listDataHeader.get(0),Header1);
listDataChild2.put(listDataHeader.get(1),Header2);
}
并修改适配器构造函数和getChildView,如下所示:

private ExpandableListAdapter listAdapter;
private ExpandableListView expListView;
private List<String> listDataHeader;
private HashMap<String, List<String>> listDataChild1, listDataChild2;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View cpf = inflater.inflate(R.layout.checklist_bstart, container, false);
    expListView = cpf.findViewById(R.id.lv_bstart);
    prepareListData();
    listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild1, listDataChild2);
    expListView.setAdapter(listAdapter);
    return cpf;
}

private void prepareListData() {
    listDataHeader = new ArrayList<>();
    listDataChild1 = new HashMap<>();
    listDataHeader.add(getResources().getString(R.string.bstart_ver));
    listDataHeader.add(getResources().getString(R.string.bstart_op));
    List<String> Header1 = new ArrayList<>();
    Header1.add(getResources().getString(R.string.bstart_string1));
    Header1.add(getResources().getString(R.string.bstart_string2));
    Header1.add(getResources().getString(R.string.bstart_string3));
    List<String> Header12 = new ArrayList<>();
    Header12.add(getResources().getString(R.string.bstart_string4));
    Header12.add(getResources().getString(R.string.bstart_string5));
    Header12.add(getResources().getString(R.string.bstart_string6));

    List<String> Header2 = new ArrayList<>();
    Header2.add(getResources().getString(R.string.bstart_string4));
    Header2.add(getResources().getString(R.string.bstart_string5));
    Header2.add(getResources().getString(R.string.bstart_string6));
    Header2.add(getResources().getString(R.string.bstart_string7));
    Header2.add(getResources().getString(R.string.bstart_string8));
    List<String> Header22 = new ArrayList<>();
    Header22.add(getResources().getString(R.string.bstart_string1));
    Header22.add(getResources().getString(R.string.bstart_string2));
    Header22.add(getResources().getString(R.string.bstart_string3));
    Header22.add(getResources().getString(R.string.bstart_string7));
    Header22.add(getResources().getString(R.string.bstart_string8));

    listDataChild1.put(listDataHeader.get(0), Header1);
    listDataChild1.put(listDataHeader.get(1), Header2);
    listDataChild2.put(listDataHeader.get(0), Header1);
    listDataChild2.put(listDataHeader.get(1), Header2);
}
Context _context;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild1, listDataChild2;

public ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listDataChild1,
                             HashMap<String, List<String>> listDataChild2) {
    _context = context;
    this.listDataHeader = listDataHeader;
    this.listDataChild1 = listDataChild1;
    this.listDataChild2 = listDataChild2;
}

@Override
public View getChildView(int groupPosition, int childPosition, boolean b, View convertView, ViewGroup viewGroup) {
    String childText = (String) getChild(groupPosition, childPosition);
    String childText2 = listDataChild2.get(getGroup(groupPosition)).get(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);
    TextView txtListChild2 = (TextView) convertView.findViewById(R.id.lblListItem2);
    txtListChild2.setText(childText2);
    return convertView;
}
Context\u Context;
列表列表数据头;
HashMap listDataChild1、listDataChild2;
公共ExpandableListAdapter(上下文上下文、列表listDataHeader、HashMap listDataChild1、,
HashMap listDataChild2){
_上下文=上下文;
this.listDataHeader=listDataHeader;
this.listDataChild1=listDataChild1;
this.listDataChild2=listDataChild2;
}
@凌驾
公共视图getChildView(int-groupPosition、int-childPosition、布尔b、视图转换视图、视图组视图组){
String childText=(String)getChild(groupPosition,childPosition);
字符串childText2=listDataChild2.get(getGroup(groupPosition)).get(childPosition);
if(convertView==null){
LayoutInflater infalInflater=(LayoutInflater)this.\u上下文
.getSystemService(上下文布局\充气机\服务);
convertView=infalInflater.充气(R.layout.list_项,空);
}
TextView txtListChild=(TextView)convertView.findViewById(R.id.lblListItem);
setText(childText);
TextView txtListChild2=(TextView)convertView.findViewById(R.id.lblListItem2);
txtListChild2.setText(childText2);
返回视图;
}
你可以做一些类似的事情来列第三张清单。需要记住的一件非常重要的事情是,第二个/第三个