توسيع عرض القائمة بدون عنصر تابع

1

أنا أستخدم عرض القائمة القابل للتوسيع حيث أقوم بإنشاء تطبيق ، تكون المشكلة عندما لا يتم تحديد أحد الوالدين ، يكون التطبيق معطلاً باستثناء مؤشر فارغ (مثل من الرمز الخاص بي ، يكون رأس القائمة الأول والأخير في كل رأس آخر يحتوي الطفل على ذلك عند الاختيار تتحرك نحو شظيتهم). كيف تتعامل مع هذه المشكلة ؟؟

نشكرك مقدمًا أدناه هو رمز عينة الخاص بي:

كود من النشاط الرئيسي

expandableList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
            v.setSelected(true);
            switch (groupPosition) {
                case 0:
                    fragment = new HomeFragment();
                    break;
                case 1:
                    switch (childPosition) {
                        case 0:
                            fragment = new PrimerFragment();
                            break;
                        case 1:
                            fragment = new SettingTabFragment();
                            break;
                        default:
                            break;
                    }
                    break;

                    case 2:
                    switch (childPosition) {
                        case 0:
                            fragment = new TabFragment();
                            break;
                        case 1:
                            fragment = new CreamTabFragment();
                            break;
                        case 2:
                            fragment = new FoundationFragment();
                            break;
                        default:
                            break;
                    }
                    break;
                case 3:
                    finish();
                    break;
                default:
                    fragment=new HomeFragment();
                    break;
            }

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.content_frame, fragment);
            transaction.addToBackStack(null);
            transaction.commit();
            mDrawerLayout.closeDrawer(expandableList);
            return false;
        }
    });
}


  listDataHeader = new ArrayList<String>();
    listDataChild = new HashMap<String, List<String>>();

    String[] array = getResources().getStringArray(R.array.nav_drawer_items);
    listDataHeader = Arrays.asList(array);

    // setting essentials

    List<String> setting = new ArrayList<String>();
    String[] set = getResources().getStringArray(R.array.setting);
    setting = Arrays.asList(set);

    // foundation essentials

    List<String> foundation = new ArrayList<String>();
    String[] found = getResources().getStringArray(R.array.foundation);
    foundation = Arrays.asList(found);

    listDataChild.put(listDataHeader.get(0), new ArrayList<String>()); 
    listDataChild.put(listDataHeader.get(1), setting);
    listDataChild.put(listDataHeader.get(2), foundation);
    listDataChild.put(listDataHeader.get(6), new ArrayList<String>());
}

رمز محول عرض قائمة قابلة للتوسيع

public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<String> _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<String>> _listDataChild;

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

@Override
public Object getChild(int groupPosition, int childPosititon) {
    return this._listDataChild.get(
            this._listDataHeader.get(groupPosition))
            .get(childPosititon);
}

@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 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_items, null);
    }

    TextView txtListChild = (TextView) convertView
            .findViewById(R.id.listItems);

    txtListChild.setText(childText);
    return convertView;
}

@Override
public int getChildrenCount(int groupPosition) {
    return this._listDataChild.get(
            this._listDataHeader.get(groupPosition)).size();
}

@Override
public Object getGroup(int groupPosition) {
    return this._listDataHeader.get(groupPosition);
}

@Override
public int getGroupCount() {
    return this._listDataHeader.size();
}

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

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
                         View convertView, ViewGroup parent) {
    String headerTitle = (String) getGroup(groupPosition);
    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) this._context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.list_header, null);
    }

    TextView lblListHeader = (TextView) convertView
            .findViewById(R.id.listheader);
    // lblListHeader.setTypeface(null, Typeface.BOLD);
    lblListHeader.setText(headerTitle);
    return convertView;
}
@Override
public boolean hasStableIds() {
    return false;
}

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

1 إجابة

0

هل تعرف أين تم طرح استثناء المؤشر الفارغ؟

ربما هنا:

@Override
public int getChildrenCount(int groupPosition) {
    return this._listDataChild.get(
            this._listDataHeader.get(groupPosition)).size();
}

تقوم باستدعاء .size () في مرجع فارغ. هل جربت؟

@Override
public int getChildrenCount(int groupPosition) {
    if (this._listDataChild.get(
               this._listDataHeader.get(groupPosition)) == null) {
       return 0;

    } else {
       return this._listDataChild.get(
            this._listDataHeader.get(groupPosition)).size();
    }
}
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام