带Piecharts的Android GridView,不支持操作异常:addView(视图,布局参数)

带Piecharts的Android GridView,不支持操作异常:addView(视图,布局参数),android,Android,我想使用Achartengine在Gridview中显示Piecharts 它说java.lang.UnsupportedOperationException:AdapterView中不支持addView(视图,布局参数) 我不知道为什么,请给我一些建议 我的适配器类: public class GraphAdapter extends BaseAdapter { class ViewHolder { private LinearLayout layout;

我想使用Achartengine在Gridview中显示Piecharts

它说java.lang.UnsupportedOperationException:AdapterView中不支持addView(视图,布局参数) 我不知道为什么,请给我一些建议

我的适配器类:

public class GraphAdapter extends BaseAdapter {
    class ViewHolder {

        private LinearLayout layout;
        private int[] COLORS = new int[] { Color.GREEN, Color.BLUE,
                Color.MAGENTA, Color.CYAN };
        private CategorySeries mSeries;
        private DefaultRenderer mRenderer;
        private GraphicalView mChartView;

        public ViewHolder(View view) {
            layout = (LinearLayout) view.findViewById(R.id.adapter_dash_graph);
            mRenderer = new DefaultRenderer();
            mSeries = new CategorySeries("");
            mChartView = ChartFactory.getPieChartView(mContext, mSeries,
                    mRenderer);
        }

        private void updateChild(String[] names, int[] values) {
            renderGraph(names, values);
            // Draw chart
            mChartView.repaint();
            layout.addView(mChartView);
        }

        private void renderGraph(String[] names, int[] values) {
            mRenderer.setApplyBackgroundColor(true);
            mRenderer.setBackgroundColor(mContext.getResources().getColor(
                    android.R.color.white));
            mRenderer.setChartTitleTextSize(20);
            mRenderer.setLabelsTextSize(20);
            mRenderer.setLabelsColor(mContext.getResources().getColor(
                    R.color.blue_dark));
            mRenderer.setLegendTextSize(20);
            mRenderer.setShowLegend(true);
            mRenderer.setMargins(new int[] { 20, 30, 15, 0 });
            mRenderer.setZoomButtonsVisible(false);
            mRenderer.setStartAngle(90);
            mRenderer.setZoomEnabled(false);
            mRenderer.setPanEnabled(false);
            for (int i = 0; i < values.length; i++) {
                mSeries.add(names[i] + " " + values[i], values[i]);
                SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
                renderer.setColor(COLORS[(mSeries.getItemCount() - 1)
                        % COLORS.length]);
                mRenderer.addSeriesRenderer(renderer);
            }
        }
    }

    private Context mContext;
    private List<OverallDetails> mUserMenus;

    public GraphAdapter(Context context, List<OverallDetails> slideMenus) {

        this.mContext = context;
        this.mUserMenus = slideMenus;
    }

    @Override
    public int getCount() {
        return mUserMenus.size();
    }

    @Override
    public OverallDetails getItem(int position) {
        return mUserMenus.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup group) {
        ViewHolder viewHolder = null;
        if (convertView == null) {
            convertView = View.inflate(mContext, R.layout.adapter_graph, group);
            viewHolder = new ViewHolder(convertView);
            convertView.setTag(viewHolder);
        }
        viewHolder.updateChild(
                mContext.getResources().getStringArray(R.array.graph_name),
                mContext.getResources().getIntArray(R.array.graph_values));
        return convertView;
    }

}
公共类GraphAdapter扩展BaseAdapter{
类视图持有者{
私人线路布局;
private int[]COLORS=new int[]{Color.GREEN,Color.BLUE,
Color.洋红,Color.CYAN};
私人分类;
私家侦探;
private GraphicalView mChartView;
公共视图持有者(视图){
布局=(LinearLayout)视图.findViewById(R.id.adapter\u dash\u graph);
mRenderer=新的DefaultRenderer();
M系列=新的类别系列(“”);
mChartView=ChartFactory.getPieChartView(mContext,mSeries,
mRenderer);
}
私有void updateChild(字符串[]名称,int[]值){
renderGraph(名称、值);
//绘制图表
mChartView.repaint();
布局。添加视图(mChartView);
}
私有void renderGraph(字符串[]名称,int[]值){
mrender.setApplyBackgroundColor(真);
mrender.setBackgroundColor(mContext.getResources().getColor(
android.R.color.white);
mRenderer.setChartTitleTextSize(20);
mrender.setLabelsTextSize(20);
mrender.setLabelsColor(mContext.getResources().getColor(
R.颜色:蓝色(深蓝色);
mrender.setLegendTextSize(20);
mrender.setShowLegend(真);
mRenderer.setMargins(新的int[]{20,30,15,0});
mrender.setZoomButtonsVisible(false);
mrender.设置起始角(90);
mrender.setZoomEnabled(false);
mrender.setPanEnabled(false);
对于(int i=0;i
尝试以以下方式实现ViewHolder:

public class GraphAdapter extends BaseAdapter {

    private int[] COLORS = new int[] { Color.GREEN, Color.BLUE,Color.MAGENTA, Color.CYAN };
    private Context mContext;
    private List<OverallDetails> mUserMenus;

    public GraphAdapter(Context context, List<OverallDetails> slideMenus) {
        this.mContext = context;
        this.mUserMenus = slideMenus;
    }

    @Override
    public int getCount() {
        return mUserMenus.size();
    }

    @Override
    public Objects getItem(int position) {
        return mUserMenus.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup group) {
        ViewHolder viewHolder;
        if (convertView == null) {
            viewHolder = new ViewHolder();
            convertView = LayoutInflater.from(mContext).inflate(R.layout.adapter_graph, null);
            viewHolder.layout = (LinearLayout) convertView.findViewById(R.id.adapter_dash_graph);
            convertView.setTag(viewHolder);

        }else{
           viewHolder = (ViewHolder) convertView.getTag();
        }

        DefaultRenderer mRenderer = new DefaultRenderer();
        CategorySeries mSeries = new CategorySeries("");
        GraphicalView mChartView = ChartFactory.getPieChartView(mContext, mSeries,mRenderer);
        renderGraph(mRenderer,mSeries,mContext.getResources().getStringArray(R.array.graph_name),mContext.getResources().getIntArray(R.array.graph_values));
        // Draw chart
        mChartView.repaint();
        viewHolder.layout.removeAllViews();
        viewHolder.layout.addView(mChartView);

        return convertView;
    }

    class ViewHolder{
        LinearLayout layout;
    }
    private void renderGraph(DefaultRenderer mRenderer,CategorySeries mSeries,String[] names, int[] values) {
        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(mContext.getResources().getColor(android.R.color.white));
        mRenderer.setChartTitleTextSize(20);
        mRenderer.setLabelsTextSize(20);
        mRenderer.setLabelsColor(mContext.getResources().getColor(R.color.blue_dark));
        mRenderer.setLegendTextSize(20);
        mRenderer.setShowLegend(true);
        mRenderer.setMargins(new int[] { 20, 30, 15, 0 });
        mRenderer.setZoomButtonsVisible(false);
        mRenderer.setStartAngle(90);
        mRenderer.setZoomEnabled(false);
        mRenderer.setPanEnabled(false);

        for (int i = 0; i < values.length; i++) {
            mSeries.add(names[i] + " " + values[i], values[i]);
            SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
            renderer.setColor(COLORS[(mSeries.getItemCount() - 1)% COLORS.length]);
            mRenderer.addSeriesRenderer(renderer);
        }
    }

}
公共类GraphAdapter扩展BaseAdapter{
private int[]COLORS=new int[]{Color.GREEN,Color.BLUE,Color.MAGENTA,Color.CYAN};
私有上下文;
私人名单博物馆;
公共图形编辑器(上下文、列表幻灯片){
this.mContext=上下文;
this.mUserMenus=slideMenus;
}
@凌驾
public int getCount(){
返回mUserMenus.size();
}
@凌驾
公共对象getItem(int位置){
返回mUserMenus.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组){
持票人持票人;
if(convertView==null){
viewHolder=新的viewHolder();
convertView=LayoutFlater.from(mContext).充气(R.layout.adapter\u图形,空);
viewHolder.layout=(LinearLayout)convertView.findViewById(R.id.adapter\u dash\u graph);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
DefaultRenderer mRenderer=新的DefaultRenderer();
CategorySeries mSeries=新的CategorySeries(“”);
GraphicalView mChartView=ChartFactory.getPieChartView(mContext、mSeries、mrender);
renderGraph(mrender、mSeries、mContext.getResources().getStringArray(R.array.graph\u name)、mContext.getResources().getIntArray(R.array.graph\u值));
//绘制图表
mChartView.repaint();
viewHolder.layout.removeAllViews();
viewHolder.layout.addView(mChartView);
返回视图;
}
类视图持有者{
线性布局;
}
私有void renderGraph(DefaultRenderer mrender、CategorySeries mSeries、String[]名称、int[]值){
mrender.setApplyBackgroundColor(真);
setBackgroundColor(mContext.getResources().getColor(android.R.color.white));
mRenderer.setChartTitleTextSize(20);
mrender.setLabelsTextSize(20);
setLabelsColor(mContext.getResources().getColor(R.color.blue_-dark));
mrender.setLegendTextSize(20);
mrender.setShowLegend(真);
mRenderer.setMargins(新的int[]{20,30,15,0});
mrender.setZoomButtonsVisible(false);
mrender.设置起始角(90);
mrender.setZoomEnabled(fal