使用 Arraylist 在 expandablelistview 中显示数据

问题描述

所以我是 ExpandableListView 的新手。我确实知道列表视图,并为列表视图制作了一个自定义适配器。然而,当谈到可扩展列表视图时,我变得有点困惑,当我尝试从字符串数组中显示数组列表时,它没有显示,它显示如下。非常感谢任何答案和帮助,提前感谢您。

我会先提供代码,然后是截图。

MainActivity.java

package com.example.myapplication;

import android.os.Bundle;
import android.widget.ExpandableListView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

    //initialize variable
    ExpandableListView expandableListView;
    ArrayList<String> listGroup = new ArrayList<>();
    HashMap<String,ArrayList<Perrow>> listChild = new HashMap<String,ArrayList<Perrow>>();
    MainAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        String[] arabic = getResources().getStringArray(R.array.arabic);
        String[] transliteration = getResources().getStringArray(R.array.transliteration);
        String[] translation = getResources().getStringArray(R.array.translation);

        //Assign variable
        expandableListView = findViewById(R.id.exp_list_view);

        //Use for loop
        for (int g=0; g<=10; g++){
            //Add values in group list
            listGroup.add("Group"+g);
            //Initialize array list
            ArrayList<Perrow> arrayList = new ArrayList<>();
            //Use for loop
            for(int c = 0; c < arabic.length; c++){
                //add values in array list
                arrayList.add(new Perrow(arabic[c],transliteration[c],translation[c]));
            }
            //put values in child list
            listChild.put(listGroup.get(g),arrayList);

        }

        //Initialize adapter
        adapter = new MainAdapter(listGroup,listChild);
        //set adapter
        expandableListView.setAdapter(adapter);



    }

}

MainAdapter.java

package com.example.myapplication;

import android.graphics.Color;
import android.graphics.Typeface;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Baseexpandablelistadapter;
import android.widget.TextView;
import android.widget.Toast;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashMap;

public class MainAdapter extends Baseexpandablelistadapter {

    //INITIALIZE VARIABLE
    ArrayList<String> listGroup;
    HashMap<String,ArrayList<Perrow>> listChild;

    //create constructor
    public MainAdapter(ArrayList<String> listGroup,HashMap<String,ArrayList<Perrow>> listChild){
        this.listGroup = listGroup;
        this.listChild = listChild;


    }
    @Override
    public int getGroupCount() {
        //return group list size
        return listGroup.size();
    }

    @Override
    public int getChildrenCount(int i) {
        //return child list size

        return listChild.get(listGroup.get(i)).size();
    }

    @Override
    public Object getGroup(int i) {
        //return group item
        return listGroup.get(i);
    }

    @Override
    public Object getChild(int i,int i1) {
        //return child item

        return listChild.get(listGroup.get(i)).get(i1);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return 0;
    }

    @Override
    public long getChildId(int groupPosition,int childPosition) {
        return 0;
    }

    @Override
    public boolean hasstableIds() {
        return false;
    }

    @Override
    public View getGroupView(int i,boolean b,View view,ViewGroup viewGroup) {
        //initialize view

        view = LayoutInflater.from(viewGroup.getContext())
                .inflate(android.R.layout.simple_expandable_list_item_1,viewGroup,false);
        //initialize and assign variable
        TextView textView = view.findViewById(android.R.id.text1);
        //initialize string
        String sGroup = String.valueOf(getGroup(i));
        //settext on textview
        textView.setText(sGroup);
        //SETTEXT STYLE BOLD
        textView.setTypeface(null,Typeface.BOLD);
        //SETTEXT COLOR
        textView.setTextColor(Color.BLUE);
        //RETURN VIEW
        return view;
    }

    @Override
    public View getChildView(int i,int i1,ViewGroup viewgroup) {
        //initialize view
        view = LayoutInflater.from(viewgroup.getContext())
                .inflate(R.layout.list_row,viewgroup,false);
        //intialize and assign variable
        TextView textView = view.findViewById(R.id.arabictext);
        TextView textView1 = view.findViewById(R.id.transliteration);
        TextView textView2 = view.findViewById(R.id.translation);
        //initialize string
        String sChild = String.valueOf(getChild(i,i1));
        //set text on text view
        textView.setText(sChild);
        textView1.setText(sChild);
        textView2.setText(sChild);
        //set on click listener
        textView.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //display toast
                Toast.makeText(viewgroup.getContext(),sChild,Toast.LENGTH_SHORT).show();
            }
        });
        //Return view

        return view;
    }

    @Override
    public boolean isChildSelectable(int groupPosition,int childPosition) {
        return false;
    }
}

Perrow.java

package com.example.myapplication;

public class Perrow {

    String arabic;
    String transliteration;
    String translation;

    public Perrow(String arabic,String transliteration,String translation) {
        arabic = arabic;
        this.transliteration = transliteration;
        this.translation = translation;

    }

    public String getarabic() {
        return arabic;
    }

    public void setarabic(String arabic) {
        arabic = arabic;
    }

    public String getTransliteration() {
        return transliteration;
    }

    public void setTransliteration(String transliteration) {
        this.transliteration = transliteration;
    }

    public String getTranslation() {
        return translation;
    }

    public void setTranslation(String translation) {
        this.translation = translation;
    }




}

list_row.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:gravity="center_horizontal"
    android:layout_gravity="center"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right">

        <TextView
            android:id="@+id/numbering"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="@dimen/_12ssp"
            android:textColor="@color/purple_200"
            android:text="number">


        </TextView>


    </RelativeLayout>



    <TextView
        android:layout_marginTop="10dp"
        android:paddingTop="20dp"
        android:padding="10dp"
        android:layout_centerHorizontal="true"
        android:id="@+id/arabictext"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="araBIC"
        android:textColor="#000000"
        android:textSize="30sp"
        android:textStyle="bold">
    </TextView>

    <TextView

        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:id="@+id/transliteration"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/arabictext"
        android:text="transliteration"
        android:textColor="#7e7e7e"
        android:textSize="13sp"
        android:textStyle="bold">
    </TextView>

    <TextView

        android:layout_centerHorizontal="true"
        android:id="@+id/translation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/transliteration"
        android:gravity="center"
        android:text="translation"
        android:textColor="#464646"
        android:textSize="13sp"
        android:paddingBottom="20dp"
        android:textStyle="bold">

    </TextView>






</RelativeLayout>

这是截图..

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...