android - 单击时如何在 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);
}
}
解决方案
得到了解决方案
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() {
}
});
推荐阅读
- python-unittest - 运行创建的测试套件时,Python 单元测试运行两次
- c# - 在 WPF MVVM 应用程序中添加材料设计后,数据网格不显示滚动条并且设计已过时
- bash - 如何使用 aws unload 命令将数据从 AWS Redshift 卸载到 s3?
- python - 无法将列值转换为整数:无法将字符串转换为浮点数:“内部”
- python - 无法将系列转换为字符串对象
- c++ - pcap_handler 回调仅在使用 npcap v0.9991 时包含空包
- java - SE 应用程序中的 JPA:如何在应用程序的生命周期内交换 EntityManager
- javascript - CSS - 百分比宽度大小在所有分辨率下看起来都不一样
- python - Plotly 漏斗图不会以十亿为单位将 xaxis 刻度更改为 B
- scala - Java.lang.nunberFormatError