【问题标题】:How to get String [] Element in MP pie chart on click?单击时如何在 MP 饼图中获取字符串 [] 元素?
【发布时间】:2018-07-23 09:47:38
【问题描述】:

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

【问题讨论】:

    标签: android pie-chart


    【解决方案1】:

    找到解决办法

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多