问题描述
所以我是 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>
这是截图..
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)