Android ExpandableListview获取IndexOutOfBoundsException如果组为';s children计数为零
希望你们都做得很好。嗯,我在一个小问题上浪费了将近两天(48小时)。我使用的是Android ExpandableListview获取IndexOutOfBoundsException如果组为';s children计数为零,android,listview,expandablelistview,indexoutofboundsexception,Android,Listview,Expandablelistview,Indexoutofboundsexception,希望你们都做得很好。嗯,我在一个小问题上浪费了将近两天(48小时)。我使用的是expandablelistview我列表中的一些组有子项,其余为空,没有子项。该列表在有子项时运行良好,但如果该组没有子项,则应用程序将崩溃 此外,我在这里做的是吼叫 public void getCartData(){ cartProgress.setVisibility(View.VISIBLE); listDataHeader = new ArrayList<>(); Li
expandablelistview
我列表中的一些组有子项,其余为空,没有子项。该列表在有子项时运行良好,但如果该组没有子项,则应用程序将崩溃
此外,我在这里做的是吼叫
public void getCartData(){
cartProgress.setVisibility(View.VISIBLE);
listDataHeader = new ArrayList<>();
ListChild = new ArrayList<>();
DatabaseReference query = mDatabase;
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//child is each element in the finished list
td = (HashMap<String, Object>) dataSnapshot.getValue();
if(td!=null) {
values = td.values();
String string = values.toString();
JSONArray jsonArray = null;
try {
jsonArray = new JSONArray(values);
for (int a = 0; a < jsonArray.length(); a++) {
JSONObject allJsonObject = jsonArray.getJSONObject(a);
CartFragParentModel cartFragParentModel = new CartFragParentModel();
cartFragParentModel.setItem_name(allJsonObject.optString("mName"));
cartFragParentModel.setItem_price(allJsonObject.optString("mPrice"));
mQuantity = allJsonObject.optString("mQuantity");
cartFragParentModel.setItem_quantity(allJsonObject.optString("mQuantity"));
cartFragParentModel.setItem_symbol(allJsonObject.optString("mCurrency"));
listDataHeader.add(cartFragParentModel);
listChildData = new ArrayList<>();
if (!allJsonObject.has("extraItem")) {
cartProgress.setVisibility(View.GONE);
}
else {
JSONArray extraItemArray = allJsonObject.getJSONArray("extraItem");
for (int b = 0; b < extraItemArray.length(); b++) {
JSONObject jsonObject = extraItemArray.getJSONObject(b);
CartFragChildModel cartFragChildModel = new CartFragChildModel();
cartFragChildModel.setQuantity(allJsonObject.optString("mQuantity"));
cartFragChildModel.setSymbol(allJsonObject.optString("mCurrency"));
cartFragChildModel.setName(jsonObject.optString("menu_extra_item_name"));
cartFragChildModel.setPrice(jsonObject.optString("menu_extra_item_price"));
listChildData.add(cartFragChildModel);
}
ListChild.add(listChildData);
}
cartFragExpandable = new CartFragExpandable(getContext(), listDataHeader, ListChild);
selected_item_list.setAdapter(cartFragExpandable);
cartProgress.setVisibility(View.GONE);
int itemCount = cartFragExpandable.getGroupCount();
for(int i=0; i < cartFragExpandable.getGroupCount(); i++)
try {
selected_item_list.expandGroup(i);
}catch (IndexOutOfBoundsException e){
e.getCause();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
else {
cartProgress.setVisibility(View.GONE);
no_cart_div.setVisibility(View.VISIBLE);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void getCartData(){
cartProgress.setVisibility(View.VISIBLE);
listDataHeader=新的ArrayList();
ListChild=newarraylist();
DatabaseReference query=mDatabase;
query.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
//子元素是完成列表中的每个元素
td=(HashMap)dataSnapshot.getValue();
如果(td!=null){
values=td.values();
String String=values.toString();
JSONArray JSONArray=null;
试一试{
jsonArray=新的jsonArray(值);
对于(int a=0;a
另外,我得到的异常是自定义适配器
ublic class CartFragExpandable extends BaseExpandableListAdapter {
Context context;
ArrayList<CartFragParentModel> ListTerbaru;
ArrayList<ArrayList<CartFragChildModel>> ListChildTerbaru;
public CartFragExpandable (Context context, ArrayList<CartFragParentModel>ListTerbaru, ArrayList<ArrayList<CartFragChildModel>> ListChildTerbaru){
this.context=context;
this.ListTerbaru=ListTerbaru;
this.ListChildTerbaru=ListChildTerbaru;
}
@Override
public boolean areAllItemsEnabled()
{
return true;
}
@Override
public CartFragChildModel getChild(int groupPosition, int childPosition) {
return ListChildTerbaru.get(groupPosition).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition)
{
return childPosition;
}
@Override
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final CartFragChildModel childTerbaru = getChild(groupPosition, childPosition);
CartFragExpandable.ViewHolder holder= null;
notifyDataSetChanged();
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.row_item_cart_child, null);
holder=new CartFragExpandable.ViewHolder();
holder.item_detail_tv = (TextView)convertView.findViewById(R.id.item_detail_tv);
convertView.setTag(holder);
}
else{
holder=(CartFragExpandable.ViewHolder)convertView.getTag();
}
String quantity = childTerbaru.getQuantity();
String name = childTerbaru.getName();
String price = childTerbaru.getPrice();
String symbol = childTerbaru.getSymbol();
holder.item_detail_tv.setText(quantity+"x "+name+" + "+symbol+price);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return ListChildTerbaru.get(groupPosition).size();
}
@Override
public CartFragParentModel getGroup(int groupPosition) {
return ListTerbaru.get(groupPosition);
}
@Override
public int getGroupCount() {
return ListTerbaru.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
CartFragParentModel terbaruModel = (CartFragParentModel) getGroup(groupPosition);
CartFragExpandable.ViewHolder holder= null;
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.row_item_cart_parent, null);
/* ExpandableListView mExpandableListView = (ExpandableListView) parent;
mExpandableListView.expandGroup(groupPosition);*/
holder=new CartFragExpandable.ViewHolder();
holder.name_tv=(TextView)convertView.findViewById(R.id.name_tv);
holder.price_tv = (TextView)convertView.findViewById(R.id.price_tv);
convertView.setTag(holder);
}
else{
holder=(CartFragExpandable.ViewHolder)convertView.getTag();
}
String quantity = terbaruModel.getItem_quantity();
String name = terbaruModel.getItem_name();
String price = terbaruModel.getItem_price();
String symbol = terbaruModel.getItem_symbol();
holder.name_tv.setText(name+" x"+quantity);
holder.price_tv.setText(symbol+price);
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int arg0, int arg1) {
return true;
}
static class ViewHolder{
TextView name_tv,price_tv,item_detail_tv;
}
公共类CartfrageExpandable扩展了BaseExpandableListAdapter{
语境;
ArrayList ListTerbaru;
ArrayList ListChildTerbaru;
公共CartFragExpandable(上下文上下文、ArrayListListTerbaru、ArrayListChildTerbaru){
this.context=context;
this.ListTerbaru=ListTerbaru;
this.ListChildTerbaru=ListChildTerbaru;
}
@凌驾
公共布尔值areAllItemsEnabled()
{
返回true;
}
@凌驾
公共CartFragChildModel getChild(int-groupPosition,int-childPosition){
返回ListChildTerbaru.get(groupPosition).get(childPosition);
}
@凌驾
公共长getChildId(int-groupPosition,int-childPosition)
{
返回子位置;
}
@凌驾
公共视图getChildView(int-groupPosition,final int-childPosition,boolean isLastChild,View-convertView,ViewGroup-parent){
最终CartFragChildModel childTerbaru=getChild(groupPosition,childPosition);
CartFragExpandable.ViewHolder=null;
notifyDataSetChanged();
if(convertView==null){
LayoutInflater infalInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
convertView=infalInflater.flate(R.layout.row\u item\u cart\u child,空);
holder=新的CartFragExpandable.ViewHolder();
holder.item\u detail\u tv=(TextView)convertView.findViewById(R.id.item\u detail\u tv);
convertView.setTag(支架);
}
否则{
holder=(CartFragExpandable.ViewHolder)convertView.getTag();
}
字符串数量=childTerbaru.getQuantity();
String name=childTerbaru.getName();
字符串price=childTerbaru.getPrice();
String symbol=childTerbaru.getSymbol();
持有者项目详细信息设置文本(数量+“x”+名称+“+”符号+价格);
返回
if (!allJsonObject.has("extraItem")) {
cartProgress.setVisibility(View.GONE);
ListChild.add(listChildData);
}
@Override
public int getChildrenCount(int groupPosition) {
return ListChildTerbaru.get(groupPosition).size();
}