我正在使用图书馆PhilJay:MPAndroidChart,以便制作可滚动的饼图。所以我要做的就是调用一个简单的Web服务,并添加切片颜色和大小。
现在我无法做的是,当我单击某个切片时,我希望其类别ID与位置相关,就像我们在Adapted类中所做的那样
这是我的主要活动
public class MainActivity extends AppCompatActivity {
ArrayList<Integer>RAWCOLOR=new ArrayList<>();
PieChart chart; ProgressDialog progressDialog;
private static String TAG = "MainActivity";
int i;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chart= findViewById(R.id.chart);
progressDialog=new ProgressDialog(MainActivity.this);
init();
chart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, Highlight h) {
Log.d(TAG, "onValueSelected: Value select from chart.");
Log.d(TAG, "onValueSelected: " + e.toString());
Log.d(TAG, "onValueSelected: " + h.toString());
int pos1 = e.toString().indexOf("(sum): ");
String sales = e.toString().substring(pos1 + 7);
for(int i = 0; i < Constant.CATEGORY_ID.length; i++){
if(Constant.CATEGORY_ID[i] == sales){
pos1 = i;
break;
}
}
String employee = Constant.CATEGORY_ID[pos1 + 1];
Toast.makeText(MainActivity.this, "Employee " + employee + "\n" + "Sales: $" + sales + "K", Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected() {
}
});
chart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View parentRow = (View) v.getParent();
ListView listView = (ListView) parentRow.getParent();
final int position = listView.getPositionForView(parentRow);
System.out.println("kjednxjk"+position);
}
});
}
private class PIE_CHART_DATA extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
progressDialog.show();
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
}
@Override
protected String doInBackground(String... params) {
WE_PIECHART selectArea = new WE_PIECHART();
String result = selectArea.loginDetail(getApplicationContext(), params[0]);
return result;
}
@Override
protected void onPostExecute(String s) {
try {
if (s.equalsIgnoreCase("success")) {
System.out.println("dkhfciudhxc"+Constant.CATEGORY_SIZE);
List<PieEntry>pieEntries=new ArrayList<>();
for (int i = 0; i< Constant.CATEGORY_SIZE.length; i++){
pieEntries.add(new PieEntry(Float.parseFloat(Constant.CATEGORY_SIZE[i]),Constant.CATEGORY_NAME[i]));
}
PieDataSet pieDataSet=new PieDataSet(pieEntries,"");
List<String> wordList = Arrays.asList(Constant.CATEGORY_COLOR);
System.out.println("kejdkjsx"+wordList);
for (String e : wordList) {
System.out.println(e);
}
for (int i = 0; i < Constant.CATEGORY_COLOR.length; i++) {
int newColor = Color.parseColor("#"+Constant.CATEGORY_COLOR[i]);
RAWCOLOR.add(newColor);
}
System.out.println("lkjsbyudc"+RAWCOLOR);
pieDataSet.setColors(RAWCOLOR);
PieData data=new PieData(pieDataSet);
chart.setData(data);
chart.invalidate();
chart.setHoleColor(Color.WHITE);
chart.setHighlightPerTapEnabled(false);
}
else
{
// Toast.makeText(getApplicationContext(), NOTIFICATION_WS.msz, Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
progressDialog.dismiss();
}
}
}
public static String toJSon(String appId) {
try {
// Here we convert Java Object to JSON
org.json.JSONObject jsonObj = new org.json.JSONObject();
jsonObj.put("appID", appId);
return jsonObj.toString();
} catch (JSONException ex) {
ex.printStackTrace();
}
return null;
}
public void init(){
String jsonData = toJSon("1");
new PIE_CHART_DATA().execute(jsonData);
}
}
答案 0 :(得分:0)
得到解决方案
chart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() { @Override
public void onValueSelected(Entry e, Highlight h) {
Log.i("VAL SELECTED", "Value: " + e.getY() + ", index: " + h.getX()
+ ", DataSet index: ");
i= (int) h.getX();
System.out.println("Position"+i);
System.out.println("CategoryName"+Constant.CATEGORY_NAME[i]);
}
@Override
public void onNothingSelected() {
}
});