2017-01-11 7 views
0

MPAndroidChartをsqliteデータを使用して挿入すると、すべて動作するように見えますが、なぜチャート自体がアクティビティに表示されないのかわかりません。 Sqliteを問い合わせ、それにこのようなデータを持っている:slagniteからのMPAndroidChartデータがアクティビティに表示されない

 
---------------------- 
| Data  | Usage | 
|------------|-------| 
| 2016-04-24 | 7.58 | 
| 2016-04-06 | 7.74 | 
| 2016-03-13 | 8.46 | 
| 2016-03-22 | 8.29 | 
---------------------- 

しかし、たとえそうであってもチャートは表示されません。 それは、変更後に働いていた:私はChartActivity.java

public void setData(String car_id){ 

    dbHelper = new DBHelper(context); 

    Cursor curChartFuelUsage = dbHelper.getChartFuelUsage(car_id); 
    curChartFuelUsage.moveToFirst(); 

    int count = curChartFuelUsage.getCount(); 
    Float[] x_refuel_data = new Float[count]; 
    Float[] y_fuel_usage = new Float[count]; 


    if (curChartFuelUsage.moveToFirst()){ 
     Log.e("CHART", "moveToFirst OK, count: " + count); 

      for (int i = 0 ; i < count ; i++){ 
       x_refuel_data[i] = curChartFuelUsage.getFloat(0); 
       y_fuel_usage[i] = curChartFuelUsage.getFloat(1); 
       curChartFuelUsage.moveToNext(); 
      } 

     ArrayList<Entry> values = new ArrayList<Entry>(); 

     for (int i = 0 ; i < count ; i++){ 
      values.add(new Entry(x_refuel_data[i], y_fuel_usage[i])); 
     } 

     LineDataSet set1 = new LineDataSet(values,"Test"); 
     set1.setAxisDependency(YAxis.AxisDependency.LEFT); 

     ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>(); 
     dataSets.add(set1); 

     LineData lineData = new LineData(dataSets); 
     chart.setData(lineData); 
     chart.invalidate(); 
    } 

chart_activity_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    <!--android:orientation="horizontal"--> 
    android:orientation="vertical" 
    xmlns:fab="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.example.asd.app.ChartActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/chart_activity_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <com.github.mikephil.charting.charts.LineChart 
     android:id="@+id/line_chart_fuel_usage" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</LinearLayout> 

編集...

をMPAndroidChartのgithubのページにguidieを休閑が、私はsomethinkを台無しに思われましたlayout orientatnionをverticalにしていますが、なぜチャートが値を1行にしか表示しないのかわかりません。

Char pic

+0

描画を開始するchart.invalidate() – cxphong

答えて

1

あなたの親LinearLayoutの向きが水平に設定し、AppBarLayoutの幅がmatch_parentあるので、チャートを描画するためにこれ以上のスペースがありますされません。

親の向きをverticalに変更してください。あなたの第二の問題については

EDIT:

あなたの日付がフロート(2016.0)にtransofmed持って、あなたのデータは同じプレフィックス(2016から0を...)持って起こるようです。

何ができString[]にすべてのx軸の値を入れて、エントリを挿入するときにされて、それが好きですか:values.add(new Entry(i, y_fuel_usage[i]));

を、その後の使用は、X軸の値を上書きIAxisValueFormatter

X軸に設定
IAxisValueFormatter formatter = new IAxisValueFormatter() { 
     @Override 
     public String getFormattedValue(float value, AxisBase axis) { 
      return yourStringArray[(int)value]; 
     } 
    }; 

yourChart.getXAxis().setValueFormatter(formatter); 

私は上記のこの特定のコードをテストしていませんが、私は過去に同様のコードを使用していました。 d。

+0

ありがとうございました!しかし、私は別の問題を抱えています、それはただ一つの行に値を示し、私の投稿を編集しました。 – relliz

+0

それは動作します!どうもありがとう! – relliz

関連する問題