我想用PieChart制作一个应用程序。 我做了两个申请。一切都是正确的。但是,如果我将代码复制到第二个,我有
Error:(95, 48) error: incompatible types: ArrayList<Entry> cannot be converted to List<PieEntry>
这是我在工作应用程序中的mainActivity的代码:
public class MainActivity extends AppCompatActivity {
float zmienna = 123;
private static String TAG = "MainActivity";
private float[] yData = {zmienna, 10.6f, 66.76f, 44.32f, 46.01f, 16.89f, 23.9f};
PieChart pieChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate: starting to create chart");
pieChart = (PieChart) findViewById(R.id.graph);
pieChart.setRotationEnabled(true);
pieChart.setHoleRadius(25f);
pieChart.setTransparentCircleAlpha(0);
pieChart.setCenterTextSize(10);
addDataSet();
}
private void addDataSet() {
Log.d(TAG, "addDataSet started");
ArrayList<PieEntry> yEntrys = new ArrayList<>();
for(int i = 0; i < yData.length; i++){
yEntrys.add(new PieEntry(yData[i] , i));
}
//create the data set
PieDataSet pieDataSet = new PieDataSet(yEntrys, "Employee Sales");
pieDataSet.setSliceSpace(2);
pieDataSet.setValueTextSize(12);
//create pie data object
PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData);
pieChart.invalidate();
}
}
第二个应用程序代码是相同的。但是错误符合
PieDataSet pieDataSet = new PieDataSet(yEntrys, "Employee Sales");
写下:
Error:(95, 48) error: incompatible types: ArrayList<Entry> cannot be converted to List<PieEntry>
请帮忙 因为我真的不知道。这两个应用程序发生了什么。
答案 0 :(得分:0)
注意到代码块是一个有效的代码块。
您在“第二次申请时”遇到的问题是
当yEntrys
期待ArrayList<Entry>
时,List<PieEntry>
的类型为ArrayList<PieEntry> yEntrys = new ArrayList<>();
。尝试在第二个应用程序中将yEntries更改为<script type="text/javascript">
<!---Calculation--->
$(document).ready(function(){
var o = 0;
o=o+0;
for(o; o<=100; 0++){
var price=$("#price").html();
var i=1;
var add;
var subtr;
var qty;
$('#add').click(function(){
qty = $('#pro_qty').val();
add = Number(qty) + Number(i);
result= Number(price)* (Number(qty) + Number(i));
$('#pro_qty').val(add);
$('.result').html(result);
});
$('#subtr').click(function(){
if(qty>1){
all_price=$('.result').text();
result=Number(all_price)- Number(price);
qty=$('#pro_qty').val();
subtr = Number(qty)-1;
$('.result').html(result);
$('#pro_qty').val(subtr);
}else{
$('#pro_qty').val(1);
$('.result').html(price);
}
});
}
});
</script>
,这应该可以解决您的问题。
另请参阅docs以获取更多信息。
如果没有,请发布不工作的活动
答案 1 :(得分:0)
您可以更改PieDataSet
的构造函数,以便第一个参数的类型为List<? extends Entry>
,而不是List<Entry>
。
如果您这样做,您就可以向其传递ArrayList<Entry>
或ArrayList<PieEntry>
,并且您的应用程序的两个版本都可以使用。当然,我假设PieEntry
是Entry
的子类型。