java.lang.UnsupportedOperationException: addView (View، LayoutParams) غير مدعوم في AdapterView

أنا باستخدام مثال ListView قابلة للتوسيع على شبكة الإنترنت

نشاط:

public class ExpandableListViewActivity extends ExpandableListActivity {
    /**
     * strings for group elements
     */
    static final String arrGroupelements[] = { "India", "Australia", "England",
            "South Africa" };

    /**
     * strings for child elements
     */
    static final String arrChildelements[][] = {
            { "Sachin Tendulkar", "Raina", "Dhoni", "Yuvi" },
            { "Ponting", "Adam Gilchrist", "Michael Clarke" },
            { "Andrew Strauss", "kevin Peterson", "Nasser Hussain" },
            { "Graeme Smith", "AB de villiers", "Jacques Kallis" } };

    DisplayMetrics metrics;
    int width;
    ExpandableListView expList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        expList = getExpandableListView();
        metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        width = metrics.widthPixels;
       //this code for adjusting the group indicator into right side of the
       //view
        expList.setIndicatorBounds(width - GetDipsFromPixel(50), width
                - GetDipsFromPixel(10));
        expList.setAdapter(new ExpAdapter(this));

        expList.setOnGroupExpandListener(new OnGroupExpandListener() {
            public void onGroupExpand(int groupPosition) {
                Log.e("onGroupExpand", "OK");
            }
        });

        expList.setOnGroupCollapseListener(new OnGroupCollapseListener() {
            public void onGroupCollapse(int groupPosition) {
                Log.e("onGroupCollapse", "OK");
            }
        });

        expList.setOnChildClickListener(new OnChildClickListener() {
            public boolean onChildClick(ExpandableListView parent, View v,
                    int groupPosition, int childPosition, long id) {
                Log.e("OnChildClickListener", "OK");
                return false;
            }

        });
    }

    public int GetDipsFromPixel(float pixels) {
       //Get the screen's density scale
        final float scale = getResources().getDisplayMetrics().density;
       //Convert the dps to pixels, based on density scale
        return (int) (pixels * scale + 0.5f);
    }
}

مشترك كهربائي:

public class ExpAdapter extends BaseExpandableListAdapter {

    private Context myContext;

    public ExpAdapter(Context context) {
        myContext = context;
    }

    public Object getChild(int groupPosition, int childPosition) {
        return null;
    }

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

    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) myContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.child_row, null);
        }

        TextView tvPlayerName = (TextView) convertView
                .findViewById(R.id.tvPlayerName);
        tvPlayerName
                .setText(ExpandableListViewActivity.arrChildelements[groupPosition][childPosition]);

        return convertView;
    }

    public int getChildrenCount(int groupPosition) {
        return ExpandableListViewActivity.arrChildelements[groupPosition].length;
    }

    public Object getGroup(int groupPosition) {
        return null;
    }

    public int getGroupCount() {
        return ExpandableListViewActivity.arrGroupelements.length;
    }

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

    public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) myContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.group_row, null);
        }

        TextView tvGroupName = (TextView) convertView
                .findViewById(R.id.tvGroupName);
        tvGroupName
                .setText(ExpandableListViewActivity.arrGroupelements[groupPosition]);

        return convertView;
    }

    public boolean hasStableIds() {
        return false;
    }

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

main.xml:

<?xml version="1.0" encoding="UTF-8"?>


    

        
        
    


حاولت هذا الحل ، ولكن لم تنجح :(

Android: تعطل ListAdapter الذي يمد BaseFapter في تشغيل التطبيق

هناك يقال لها لإضافة معلمة ثالثة "كاذبة" ، إلى inflater.inflate (R.layout.group_row ، فارغة ، خطأ) ؛

0
آسف لم أكن أفهم تعليقك .... ولكن عندما كنت تصحيح الأخطاء باستخدام السجل ، الخطأ هو مع setContentView (R.layout.main) في النشاط ... لذلك قمت بلصق main.xml في السؤال ... يمكن أنت تساعد؟
وأضاف المؤلف Archie.bpgc, مصدر
هل هذا هو كل الرمز في هذا النشاط؟ الرمز من السؤال الآخر هو inflater.inflate (R.layout.group_row ، الأصل ، false) ؛
وأضاف المؤلف Luksprog, مصدر

2 إجابة

نقل TextView خارج عنصر ExpandableListView :

<?xml version="1.0" encoding="UTF-8"?>


    
    
    
    

لا يمكن أن تحتوي الفئات الفرعية لـ AdapterViewer (مثل ExpandableListView ) على أطفال في تخطيط xml (كما فعلت في التخطيط الخاص بك).

0
وأضاف

إذا كنت مثلي ووجدت هذا السؤال دون استخدام ExpandableListView ، فحاول استخدام إضافة المعلمة الثالثة إلى طريقة تضخيم ، كما يذكرLuksprog ، كما ذكر here :

inflater.inflate(R.layout.group_row, parent, false);

لا تستخدم true بدلاً من false أو ستحصل على نفس الخطأ الذي أحضره هنا ، لأنه يحاول إرفاقه/إضافته إلى الأصل ، ومن ثم addView غير مدعوم في خطأ موبيل فيو .

0
وأضاف
Android Sudan Community
Android Sudan Community
900 مشارك

كل اقتراحاتكم تتم مشاركتها هنا رابط القناة لتنزيل البرامج والالعاب من هنا @android_sudan تنبيه : القروب غير مختص إطلاقا بي الانترنت المجاني مثل ملفات الحاقن وماشابه يمنع منعا باتا نشر اي ملفات او برامج او اي شيء يتعلق بالانترنت المجان