显示列表视图使用Adpater aChartengine [英] Displaying aChartengine using Listview Adpater

查看:203
本文介绍了显示列表视图使用Adpater aChartengine的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想显示使用自定义适配器,它是在没有任何错误执行一个ListView里面aChartengine饼图但不显示图表..please帮助。
我有一个方法openChart()..这是创建图表,并返回查看,我通过支架上的获取视图正在设置。结果
    code

 公共查看getView(INT位置,查看convertView,ViewGroup中ARG2){.....convertView = mInflater.inflate(R.layout.chart,NULL);
                holder.vw =(ViewGroup中)convertView.findViewById(id.chart_container);
                //Log.w(\"In视图,);
                holder.vw.addView(openChart());
convertView.setTag(保持器);
        }
        其他{            支架=(座)convertView.getTag();
        }
        返回convertView;
    }....
私人查看openChart(){
        //饼图节名
        的String [] code =新的String [] {
            巧克力慕斯蛋糕&安培;老年,升级Froyo,姜饼,蜂窝,
            冰淇淋三明治,果冻豆
        };        //饼图分割点
        双[] =分布{3.9,12.9,55.8,1.9,23.7,1.8};        //每个饼图部分颜色
        INT [] =颜色{Color.BLUE,Color.MAGENTA,Color.GREEN,Color.CYAN,Color.RED,
                        Color.YELLOW};        //实例化CategorySeries绘制饼图
        CategorySeries distributionSeries =新CategorySeries(饼);
        的for(int i = 0; I< distribution.length;我++){
            //添加具有它的价值和名字切片饼图
            distributionSeries.add(code [I]中,分配由[i]);
        }        //实例化的饼图渲染器
        DefaultRenderer defaultRenderer =新DefaultRenderer();
        的for(int i = 0; I< distribution.length;我++){
            SimpleSeriesRenderer seriesRenderer =新SimpleSeriesRenderer();
            seriesRenderer.setColor(颜色[I]);
            seriesRenderer.setDisplayChartValues​​(真);
            //添加渲染器片
            defaultRenderer.addSeriesRenderer(seriesRenderer);
        }        defaultRenderer.setChartTitle(Android版本分布于2012年10月1日);
        defaultRenderer.setChartTitleTextSize(20);
        defaultRenderer.setZoomButtonsVisible(真);
        defaultRenderer.setBackgroundColor(Color.GRAY);
        defaultRenderer.setDisplayValues​​(真);
     //前往在MainActivity布局的LinearLayout参考
        //的LinearLayout chartContainer =(的LinearLayout)findViewById(R.id.chart_container);
        //创建一个折线图
        mChart = ChartFactory.getPieChartView(mContext,distributionSeries,defaultRenderer);        //添加折线图到的LinearLayout
        //chartContainer.addView(mChart);        //使用的数据集和multipleRenderer创建意图情节条形图
       //意图意图= ChartFactory.getPieChartIntent(getBaseContext(),distributionSeries,defaultRendererAChartEnginePieChartDemo);        //开始活动
       // startActivity(意向);
        Log.w(中图,mChart.toString()+);
        返回mChart;    }


解决方案

我经历了同样的问题了前一阵子。在我来说,我不得不放弃图形视图一个固定的高度。
你也可以给固定高度的图形视图的父母一方,然后用 match_parent WRAP_CONTENT 在图形视图。

请参阅我的XML:

 < RelativeLayout的
        的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
        机器人:layout_width =match_parent
        机器人:layout_height =88dp>        <的LinearLayout
            机器人:ID =@ + ID /暗算
            机器人:layout_width =match_parent
            机器人:layout_height =WRAP_CONTENT
            机器人:方向=垂直
            机器人:layout_marginLeft =@扪/ list_item_margin
            机器人:layout_marginRight =@扪/ list_item_margin
            机器人:layout_alignBottom =@ ID /图像
            机器人:layout_alignTop =@ ID /图像
            机器人:layout_toRightOf =@ ID /图片/>        <! - 其他视图... - >< / RelativeLayout的>

这可能是因为做的ListView要尽量减少其项目的高度。如果这是真的,你的图在那里,但它的高度是零。

I am trying to display aChartengine pie chart inside a listview using a custom adapter , it is executing without any error but not displaying chart ..please help. I have a method openChart()..which is creating chart and returning view which i am setting in the get view through holder.
code

public View getView(int position, View convertView, ViewGroup arg2) {

.....

convertView = mInflater.inflate(R.layout.chart,null);
                holder.vw=(ViewGroup) convertView.findViewById(id.chart_container);
                //Log.w("In View", );
                holder.vw.addView(openChart());
convertView.setTag(holder);
        }
        else {

            holder = (Holder) convertView.getTag();
        }
        return convertView;
    }

....
private View openChart(){


        // Pie Chart Section Names
        String[] code = new String[] {
            "Eclair & Older", "Froyo", "Gingerbread", "Honeycomb",
            "IceCream Sandwich", "Jelly Bean"
        };

        // Pie Chart Section Value
        double[] distribution = { 3.9, 12.9, 55.8, 1.9, 23.7, 1.8 } ;

        // Color of each Pie Chart Sections
        int[] colors = { Color.BLUE, Color.MAGENTA, Color.GREEN, Color.CYAN, Color.RED,
                        Color.YELLOW };

        // Instantiating CategorySeries to plot Pie Chart
        CategorySeries distributionSeries = new CategorySeries("PIe");
        for(int i=0 ;i < distribution.length;i++){
            // Adding a slice with its values and name to the Pie Chart
            distributionSeries.add(code[i], distribution[i]);
        }

        // Instantiating a renderer for the Pie Chart
        DefaultRenderer defaultRenderer  = new DefaultRenderer();
        for(int i = 0 ;i<distribution.length;i++){
            SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
            seriesRenderer.setColor(colors[i]);
            seriesRenderer.setDisplayChartValues(true);
            // Adding a renderer for a slice
            defaultRenderer.addSeriesRenderer(seriesRenderer);
        }

        defaultRenderer.setChartTitle("Android version distribution as on October 1, 2012 ");
        defaultRenderer.setChartTitleTextSize(20);
        defaultRenderer.setZoomButtonsVisible(true);
        defaultRenderer.setBackgroundColor(Color.GRAY);
        defaultRenderer.setDisplayValues(true);
     // Getting a reference to LinearLayout of the MainActivity Layout
        //LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container);


        // Creating a Line Chart
        mChart = ChartFactory.getPieChartView(mContext, distributionSeries , defaultRenderer);

        // Adding the Line Chart to the LinearLayout
        //chartContainer.addView(mChart);

        // Creating an intent to plot bar chart using dataset and multipleRenderer
       // Intent intent = ChartFactory.getPieChartIntent(getBaseContext(), distributionSeries , defaultRenderer, "AChartEnginePieChartDemo");

        // Start Activity
       // startActivity(intent);
        Log.w("In Chart", mChart.toString() +"");
        return mChart;

    }

解决方案

I went through the same issue a while ago. In my case I had to give the graph view a fixed height. You can also give fixed height to one of the graph view's parents and then use match_parent or wrap_content on the graph view.

See my xml:

<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="88dp">

        <LinearLayout
            android:id="@+id/plot"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginLeft="@dimen/list_item_margin"
            android:layout_marginRight="@dimen/list_item_margin"
            android:layout_alignBottom="@id/image"
            android:layout_alignTop="@id/image"
            android:layout_toRightOf="@id/image"/>

        <!-- other views... -->

</RelativeLayout>

This is probably done because ListView wants to minimize the height of its items. If this is true, your graph was there, but its height was zero.

这篇关于显示列表视图使用Adpater aChartengine的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆