2016-05-26 13 views
0

LineChartの作成に問題があります。すべての行を表示する必要があるときに最後のLineを表示しています。ここでのコードは次のとおりです。MPAndroidChart LineChart LineDataだけを表示

Collections.addAll(labels,` column); 
dataSets = new ArrayList<ILineDataSet>(); 
for (monthlysales company : companieslist) { 
entries.clear(); 
for (int j = 0; j < listofcompanies.Total.size(); j++) { 
entries.add(new Entry(Float.parseFloat(listofcompanies.Total.get(j)), j)); 
} 
setComp1 = new LineDataSet(entries, company.StoreName); 
setComp1.setAxisDependency(YAxis.AxisDependency.LEFT); 
setComp1.setColor(Color.BLUE); 
dataSets.add(setComp1); 
} 
LineData data = new LineData(column,dataSets); 
linechart.setData(data); 
linechart.setDescription("Sales"); 
linechart.animateXY(5000,5000); 
linechart.setPinchZoom(true); 
linechart.setDoubleTapToZoomEnabled(true); 
linechart.setDragDecelerationEnabled(true); 
linechart.notifyDataSetChanged(); 
linechart.invalidate(); 
} 

これは実際に理にかなっている、あなたに

答えて

0

entries.clear(); 

を:

**dataSets.add(createLineChart(company,company.StoreName,company.Total));** 

       data = new LineData(column,dataSets); 


       linechart.setData(data); 
       linechart.invalidate(); 
       linechart.setDescription("Sales"); 

と、これは関数です。

private LineDataSet createLineChart(monthlysales company,String storeName,List<String> listofcompanies){ 
    // LineData data=new LineData(); 
    ArrayList<Entry> entries= new ArrayList<Entry>(); 
    for (int j = 0; j < listofcompanies.size(); j++) { 

     entries.add(new Entry(Float.parseFloat(listofcompanies.get(j)),j)); 

linechart.notifyDataSetChanged(); 

    } 
    Random rd = new Random(); 
    setComp1 = new LineDataSet(entries,storeName); 


    setComp1.setColor(Color.argb(255,rd.nextInt(256),rd.nextInt(256),rd.nextInt(256))); 


    // LineData data =new LineData(labels,dataset); 
    return setComp1; 

} 

LineDataSetは、最後に1行だけ表示されたときに使用されたようです。

1

ありがとうございます。 entriesリストにデータを追加して、データセットに正しく追加しています。問題は、追加した後に毎回エントリの一覧をクリアすることです。各データセットに対して個別のリストを使用する必要があります。

ライン置き換える:それは今関数を作成することによって解決し、以下のようにそれを呼び出すだ

List<Entry> entries = new ArrayList<>(); 
+0

私はそれを置き換えましたが、それはデバッグすると、奇妙な仕事をしませんでした、linechart.setData(データ)のデータ;すべてのデータを含むmYValsのリストを含む4つのmDataSetsがすべて存在することがわかります。ブール値や、すべての行を表示するためにトグルする必要があるものはありますか?ありがとうございます – Albert

+0

いいえブール値はありません。毎回setComp1を別のオブジェクトに初期化してみてください。 –

+0

は、これを 'List entries = new ArrayList <>()で使用すると、' LineDataSet setComp1 = new LineDataSet(entries、company.StoreName) ;私は答えで言及しました –

関連する問題