Как я могу удалить элемент списка навсегда? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть этот код, где элемент списка удаляется из списка, но после перезагрузки списка снова появляется элемент.Как я могу удалить элемент навсегда?Пожалуйста, помогите мне.

Код для удаления элемента списка:

 b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                 checkedItemPositions = listView.getCheckedItemPositions();
                int itemCount = listView.getCount();

                for(int i=itemCount-1; i >= 0; i--){
                    if(checkedItemPositions.get(i)){
                        str=list.get(i);
                        adapter.remove(str);
                    }
                }
                checkedItemPositions.clear();
                adapter.notifyDataSetChanged();
                listView.setAdapter(adapter);

            }
        });

Редактировать: По запросу @Nirup Iyer, это мой полный код:

   package com.example.myapplication;

import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;

import static com.example.myapplication.Pop_up.s2;
import static com.example.myapplication.Pop_up.text1;
import static com.example.myapplication.Pop_up.thedate;
import static com.example.myapplication.Pop_up_2.aManager;
import static com.example.myapplication.Pop_up_2.dat;
import static com.example.myapplication.Pop_up_2.dite;
import static com.example.myapplication.Pop_up_2.pIntent;
import static com.example.myapplication.Pop_up_2.pqr;
import static com.example.myapplication.Pop_up_2.s;
import static com.example.myapplication.modify_events.st;
import static com.example.myapplication.modify_events_1.st1;
import static com.example.myapplication.modify_events_2.st2;

public class modify_events_3 extends nav_draw {
    ListView listView;
    TextView textView;
    ArrayAdapter<String> adapter;
    String day,month,year;
    Button b1,b2;
    String str=null;
    List<String> list = new ArrayList<String>();
    SparseBooleanArray checkedItemPositions;
    int i,j;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.events_week);
        listView = (ListView) findViewById(R.id.listView);
        textView = (TextView) findViewById(R.id.textView);
        b1=(Button)findViewById(R.id.button10);
        b2=(Button)findViewById(R.id.button11);
        final String arr[]=new String[10];
        if(dite==null)
        {
            startActivity(new Intent(modify_events_3.this,nav_draw.class));
            Toast.makeText(getApplicationContext(),"Please create an event first", Toast.LENGTH_SHORT).show();
        }else {
               DateFormat format2 = new SimpleDateFormat("EEE");
            DateFormat format3 = new SimpleDateFormat("MMM");
            DateFormat format4 = new SimpleDateFormat("yyyy");
            day = format2.format(dite);
             month = format3.format(dite);
             year = format4.format(dite);
            list.add(pqr);
            adapter = new ArrayAdapter<String>(modify_events_3.this, android.R.layout.simple_list_item_multiple_choice, list);
            //Toast.makeText(getApplicationContext(), day + "" + month + "" + year, Toast.LENGTH_LONG).show();
        }
        if (((st2.equals(day)) && (st1.equals(month)) && (st.equals(year)))) {
            listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
            listView.setAdapter(adapter);
            b1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    SparseBooleanArray checked = listView.getCheckedItemPositions();
                    ArrayList<String> selectedItems = new ArrayList<String>();
                    for(int i=0;i<checked.size();i++) {
                        int position;
                        position = checked.keyAt(i);
                        if (checked.valueAt(i))
                            selectedItems.add(adapter.getItem(position));
                        for (int j = 0; j < arr.length; j++) {
                            str = listView.getItemAtPosition(i).toString();
                            str = arr[j];
                        }
                    }
                        startActivity(new Intent(modify_events_3.this,Pop_up.class));
                    Intent incoming = getIntent();
                    String dat = incoming.getStringExtra("date");
                        thedate.setText(dat);
                        text1.setText(str);
                        Toast.makeText(getApplicationContext(), "Have anything else in mind? ;)", Toast.LENGTH_SHORT).show();
                }
            });
            b2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                     checkedItemPositions = listView.getCheckedItemPositions();
                    int itemCount = listView.getCount();

                    for(int i=itemCount-1; i >= 0; i--){
                        if(checkedItemPositions.get(i)){
                            str=list.get(i);
                            adapter.remove(str);
                        }
                    }
                    checkedItemPositions.clear();
                    adapter.notifyDataSetChanged();
                    adapter=null;
                    listView.setAdapter(adapter);
                    aManager.cancel(pIntent);
                    Toast.makeText(getApplicationContext(), "The alarm has been deleted successfully", Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(modify_events_3.this,nav_draw.class));
                }
            });
        } else {
            adapter=null;
            listView.setAdapter(adapter);
            Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "No event was created", Snackbar.LENGTH_LONG);
            snackbar.show();
        }
    }
}

Должен ли я записать элемент в файл?

1 Ответ

0 голосов
/ 18 апреля 2019

Исходя из того, что вы сказали, и увидев код, элемент снова появится в списке.Это связано с тем, что при перезагрузке действия метод onCreate () вызывается снова, и весь код в onCreate () выполняется.Это означает, что ваш список создается снова, адаптер инициализируется снова и список снова заполняется.Любые изменения, внесенные в список, будут действовать до тех пор, пока действие не станет активным.

Если вы хотите, чтобы удаленный элемент был удален даже после его смерти, вы можете записать свой элемент списка в постоянное хранилище (База данных, SharedPreferences).или внутреннее / внешнее хранилище) (подробнее здесь ).Таким образом, любые сделанные вами изменения могут быть сохранены в хранилище и считаны оттуда в методе onCreate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...