首页 > 解决方案 > 单击时如何在 MP 饼图中获取 String [] 元素?

问题描述

我正在使用库 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);
}
}

标签: androidpie-chart

解决方案


得到了解决方案

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() {

        }
    });

推荐阅读