java - 在选定的饼图值上创建删除对话框?

标签 java android arraylist charts

我使用 MPAndroidChart 库创建了这个 Android 应用程序,它允许用户使用 ArrayList 快速创建饼图(我添加了一些屏幕截图,以进行说明)。

我的问题是我想允许用户从饼图(和数组列表)中删除一个条目,然后应该在没有删除的条目的情况下呈现饼图。

有什么方法可以让用户长按某个项目,这会打开某种是/否对话框来实现这一点?

Screenshots gallery

代码:

package com.example.quickpie;



public class Main extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final List<PieEntry> entries = new ArrayList<>();

    final EditText editText = (EditText) findViewById(R.id.editText);
    final EditText editText2 = (EditText) findViewById(R.id.editText2);
    final EditText editText3 = (EditText) findViewById(R.id.editText3);
    final Button button = (Button) findViewById(R.id.button);
    final Button button2 = (Button) findViewById(R.id.button2);
    final TextView textView = (TextView) findViewById(R.id.textView);
    final TextView textView2 = (TextView) findViewById(R.id.textView2);
    final TextView textView3 = (TextView) findViewById(R.id.textView3);

    editText.requestFocus();

    button.setOnClickListener(new View.OnClickListener() {
                                   public void onClick (View v) {

                                       //if(editText.getFreezesText())

                                       if (editText.getText().toString().matches("")) {
                                           Toast.makeText(getBaseContext(), "You did not enter a Valid Item ID", Toast.LENGTH_LONG).show();
                                           return;
                                       }

                                       else if (editText2.getText().toString().matches("")) {
                                           Toast.makeText(getBaseContext(), "You did not enter a Valid Quantitiy", Toast.LENGTH_LONG).show();
                                           return;

                                       }

                                       else {












                                       String nomen = (editText.getText().toString());
                                       float number = Float.parseFloat(editText2.getText().toString());



                                           final PieChart piechart = (PieChart) findViewById(R.id.piechart);
                                           entries.add(new PieEntry(number, nomen));

                                           editText.setText("");
                                           editText2.setText("");
                                           textView3.setSingleLine(false);
                                           textView3.append("\n" + nomen + " " + number);
                                           editText.requestFocus();


                                           PieDataSet set = new PieDataSet(entries, "");


                                           //colors

                                           getResources().getColor(R.color.violp);
                                           getResources().getColor(R.color.bluep);
                                           getResources().getColor(R.color.redp);
                                           getResources().getColor(R.color.greenp);
                                           getResources().getColor(R.color.yellowp);
                                           getResources().getColor(R.color.orangep);
                                           getResources().getColor(R.color.lightbluep);
                                           getResources().getColor(R.color.purplep);
                                           getResources().getColor(R.color.darkredp);


                                           set.setColors(new int[]{R.color.bluep, R.color.greenp, R.color.violp, R.color.redp, R.color.yellowp, R.color.orangep, R.color.lightbluep, R.color.purplep, R.color.darkredp}, getApplicationContext());
                                           PieData data = new PieData(set);
                                           piechart.setData(data);


                                           Description description = new Description();
                                           description.setText(getResources().getString(R.string.besch));
                                           piechart.setDescription(description);

                                           Toast.makeText(getBaseContext(), (R.string.loading),
                                                   Toast.LENGTH_SHORT).show();


                                           String mitte = (editText3.getText().toString());
                                           piechart.setCenterText(mitte);


                                           piechart.setCenterTextSize(30);
                                           piechart.setNoDataText(String.valueOf(R.string.nodata));
                                           piechart.notifyDataSetChanged();

                                           piechart.animateX(2000, Easing.EasingOption.EaseInExpo);
                                           piechart.animateY(2000, Easing.EasingOption.EaseInExpo);

                                           piechart.invalidate();
                                           editText3.setVisibility(View.VISIBLE);

                                           editText3.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                                               @Override
                                               public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                                                   if (actionId == EditorInfo.IME_ACTION_DONE) {

                                                       String mitte = (editText3.getText().toString());
                                                       piechart.setCenterText(mitte);
                                                       editText3.setText("");
                                                       editText.requestFocus(); //editText3.setVisibility(View.INVISIBLE);

                                                       InputMethodManager imm = (InputMethodManager) getSystemService(Main.INPUT_METHOD_SERVICE);
                                                       imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);


                                                       //do something
                                                   }
                                                   return false;
                                               }
                                           });

                                           editText3.setOnTouchListener(new View.OnTouchListener() {
                                               @Override
                                               public boolean onTouch(View v, MotionEvent event) {
                                                   if (MotionEvent.ACTION_UP == event.getAction()) {
                                                       piechart.setCenterText("");
                                                       textView3.setHint(R.string.hint1);

                                                   }

                                                   return false; // return is important...
                                               }
                                           });


                                           button.setOnLongClickListener(new View.OnLongClickListener() {

                                               @Override
                                               public boolean onLongClick(View v) {

                                                   Toast.makeText(getBaseContext(), R.string.longpresshint, Toast.LENGTH_LONG).show();

                                                   return true;
                                               }
                                           });



















                                           final Button button2 = (Button) findViewById(R.id.button2);
                                           button2.setOnClickListener(new View.OnClickListener() {


                                               @Override
                                               public void onClick(View v) {
                                                   String mitte = (editText3.getText().toString());
                                                   piechart.setCenterText(mitte);
                                                   //piechart.setVisibility(View.VISIBLE);
                                                   //editText.setVisibility(View.INVISIBLE);
                                                   //textView2.setVisibility(View.INVISIBLE);
                                                   //textView3.setVisibility(View.INVISIBLE);
                                                   //editText3.setVisibility(View.INVISIBLE);
                                                   // editText2.setVisibility(View.INVISIBLE);
                                                   //button.setVisibility(View.INVISIBLE);
                                                   //button2.setVisibility(View.INVISIBLE);

                                                   Toast.makeText(getBaseContext(), (R.string.loading),
                                                           Toast.LENGTH_SHORT).show();


                                                   piechart.animateX(2000, Easing.EasingOption.EaseInExpo);
                                                   piechart.animateY(2000, Easing.EasingOption.EaseInExpo);

                                                   InputMethodManager imm = (InputMethodManager) getSystemService(Main.INPUT_METHOD_SERVICE);
                                                   imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);


                                               }


                                           });
                                       }}
    }
    )
    ;
}

@Override
public void onBackPressed(){
    super.onBackPressed();
    Intent intent = getIntent();
    finish();
    startActivity(intent);


}



}

最佳答案

请试试这个

    button.setOnClickListener(new View.OnClickListener() {
                                   public void onClick (View v) {

                                       //if(editText.getFreezesText())

                                       if (editText.getText().toString().matches("")) {
                                           Toast.makeText(getBaseContext(), "You did not enter a Valid Item ID", Toast.LENGTH_LONG).show();
                                           return;
                                       }

                                       else if (editText2.getText().toString().matches("")) {
                                           Toast.makeText(getBaseContext(), "You did not enter a Valid Quantitiy", Toast.LENGTH_LONG).show();
                                           return;

                                       }

                                       else {
piechart.invalidate();

}

关于java - 在选定的饼图值上创建删除对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41380339/

相关文章:

java - 谷歌地图 API Android 崩溃

java - 为什么这个笔划这么零散,为什么只划到里面?

java - gRPC maven 未在目标文件夹中生成 stub 类

java - 获取对象中的空指针异常

Java 关闭 IOStream 最后给出错误 : Unhandled Exception: java. io.IOException

android - Android 对话框中的 TouchEvent

带有麦克风和麦克风事件的 Android 搜索栏。带麦克风的 Android searchview

android - 需要帮助管理内存

java - 使用 arraylist 打印给定字符串中长度为 k 的所有可能的字符串,并允许重复

java - ArrayList 如何在恒定时间内检索数据?