java.lang.UnsupportedOperationException :addView (View, LayoutParams )не поддерживается в AdapterView

Я использую пример Expandable 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:




    

        
        
    


Я попробовал это решение, но оно не сработало:(

Android :Пользовательский ListAdapter, расширяющий BaseAdapter, аварийно завершает работу при запуске приложения

там сказано добавить третий параметр "false" в inflater.inflate (R.layout.group _row, null, false );

9
задан Community 23 May 2017 в 12:04
поделиться