Как установить clicklistener для значения / диаграммы в круговой диаграмме в android? - PullRequest
0 голосов
/ 07 апреля 2020

'При нажатии на часть круговой диаграммы я хочу отобразить скрытый относительный макет, как я могу это сделать? например, если я нажимаю на доктора, то хочу показать скрытое относительное расположение. '

public class HomeFragment extends Fragment {

    private HomeViewModel homeViewModel;
    float values[]= {60.0f,60.0f,60.0f,60.0f,60.0f,60.0f};
    String services[]={"Doctor","Patient Care","Nursing","Housekeeping","Food & Beverage","Maintenance"};
    RelativeLayout rlLayout;
    RadioButton r6;
    EditText houseKeeping;
    PieChart pieChart;

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        homeViewModel =
                ViewModelProviders.of(this).get(HomeViewModel.class);
        View root = inflater.inflate(R.layout.fragment_home, container, false);

        pieChart = (PieChart) root.findViewById(R.id.idPieChart);
        rlLayout= root.findViewById(R.id.reLayout);
        r6= root.findViewById(R.id.r6);
        houseKeeping = root.findViewById(R.id.other_housekeeping);

        List<PieEntry> pieEntries=new ArrayList<>();
        for (int i=0;i<values.length;i++){
            pieEntries.add(new PieEntry(values[i],services[i]));
        }

        PieDataSet dataSet=new PieDataSet(pieEntries,"Services");
        dataSet.setColors(CustomColors.SERVICE_COLORS);
        PieData data=new PieData(dataSet);

        pieChart.setData(data);
        pieChart.animateY(1000);
        pieChart.setTouchEnabled(true);
        pieChart.getDescription().setEnabled(false);
        pieChart.invalidate();

        pieChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
            @Override
            public void onValueSelected(Entry e, Highlight h) {
                int pos1 = e.toString().indexOf("(sum): ");
                String sales = e.toString().substring(pos1 + 6);

                for(int i = 0; i < values.length; i++){
                    if(values[i] == Float.parseFloat(sales)){
                        pos1 = i;
                        break;
                    }
                }
                if (pos1==4){
                    rlLayout.setVisibility(View.VISIBLE);
                }

            }

            @Override
            public void onNothingSelected() {

            }
        });
        return root;

    }

}
...