2014-08-30 2 views
0

Я пытаюсь отобразить круговую диаграмму aChartengine внутри списка с использованием пользовательского адаптера, она выполняется без каких-либо ошибок, но не отображает диаграмму. У меня есть метод openChart() .. который создает диаграмму и возвращает представление, которое я устанавливаю в режиме просмотра через держатель.
кодОтображение aChartengine с использованием Listview Adpater

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; 

    } 
+0

Почему у вас есть 'holder = (Holder) convertView.getTag();' в вашем заявлении else, если вы его не используете? Также вы не обновляете преобразование, если оно не равно нулю. – hoomi

+0

У меня есть копия, вставляемая в нее ..i удалит ее. –

ответ

0

Я прошел через тот же вопрос некоторое время назад. В моем случае я должен был дать графику вид фиксированной высоты. Вы также можете указать фиксированную высоту одному из родителей графического представления, а затем использовать match_parent или wrap_content на графическом виде.

Смотрите мой 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> 

Это, вероятно, сделано потому, что ListView хочет минимизировать высоту ее элементов. Если это так, ваш график был там, но его высота была равна нулю.

+0

Спасибо .. это работает :) –

+0

Я рад, что он работает. :) Не могли бы вы пометить мой ответ как правильный? :) – Adogeon

Смежные вопросы