1

I made my own dialog box class. This class has a button to delete an item from a listview(which is the main acctivity_main.xml). When I push the delete button the item does not get deleted.

I have seen this topic Android: how to remove an item from a listView and arrayAdapter. It just appears the user does not know how to get the item index correctly, which I believe I have done correctly.

Remove ListView items in Android This one is pretty close. But in my code I created my own dialog, this one is using a positive and negative button. I am passing variables between my dialog class and to the mainActivity.

my onClickListener in OnCreate withing the MainActivity

 mFoodDataAdapter = new FoodDataAdapter();
        final ListView listFoodData = (ListView) findViewById(R.id.listView);
        listFoodData.setAdapter(mFoodDataAdapter);

        //Handle clicks on the ListView
        listFoodData.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int whichItem, long id) {

                FoodData tempFoodData = mFoodDataAdapter.getItem(whichItem);
                //create a new dialog window
                DialogShowFood dialog = new DialogShowFood();
                // send in a reference to the note to be shown
                dialog.sendFoodDataSelected(tempFoodData);

                FoodDataAdapter adapter1 = new FoodDataAdapter();

                /*this is where i send the data to the DialogShowFood.java*/
                dialog.sendFoodDataAdapter(adapter1, whichItem);

                // show the dialog window with the note in it
                dialog.show(getFragmentManager(),"");
            }
        });

Here is my class for the dialog "DialogShowFood.java"

public class DialogShowFood extends DialogFragment {

    FoodData mFood;
    MainActivity.FoodDataAdapter mAdapter;
    int  mitemToDelete;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        LayoutInflater inflater = getActivity().getLayoutInflater();
        View dialogView = inflater.inflate(R.layout.dialog_show_food, null);

        Button btnDelete = (Button) dialogView.findViewById(R.id.btnDelete);

        builder.setView(dialogView).setMessage("Your food");

        /*this sends the item to delete to the adapter*/
        btnDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mAdapter.deleteFoodData(mitemToDelete);
                dismiss();
            }
        });
        return builder.create();
    }

    /*this gets the data to delete from the MainActivity*/
    public void sendFoodDataAdapter(MainActivity.FoodDataAdapter adapter1, int whichItem) {
        mAdapter = adapter1;
        mitemToDelete = whichItem;
    }
}

The function inside the adapter

  /*this is the function in the base adapter to delete the item*/
   public void deleteFoodData(int n){
            Toast.makeText(MainActivity.this,Integer.toString(n), Toast.LENGTH_SHORT).show();
            foodDataList.remove(n);
            notifyDataSetChanged();
        }

The Toast outputs the proper indexes of the item to delete, it just does not delete the item for some reason.

Community
  • 1
  • 1
crims
  • 9
  • 5
  • From the code, it looks like you have created a new adapter, "FoodDataAdapter adapter1 = new FoodDataAdapter();", but not set it to the ListView (listFoodData). Hope that help! – i_A_mok Jan 03 '17 at 04:32

0 Answers0