Как я могу удалить элемент на моем SQliteOpenhelper

Я сохраняю свой recyclerview с помощью SQliteopenhelper. Я могу добавить элемент с переменными edittext. Я использую Itemtouchhelper для удаления элемента. Как я могу удалить элемент на SQliteopenhelper. Можешь ли ты быть быстрым

todoactivity.java

   public class todoactivity extends AppCompatActivity    {
    TextView title;
    Button back;
    ImageButton gorevo;
    RecyclerView recyclerView;
    List<String>Listsx = new ArrayList<>();
    TodoActivityAdpter adapterx;
    DatabaseHelper4 myDBxxx;
    TextView textView;
    CheckBox checkBox;
    long id;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_todoactivity);
        recyclerView=findViewById(R.id.recyclerviewxx);
        recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
        adapterx=new TodoActivityAdpter(Listsx);
        recyclerView.setAdapter(adapterx);
        title=findViewById(R.id.titlex);
        textView=findViewById(R.id.text_viewx);
        gorevo = findViewById(R.id.gorevo);

        myDBxxx = new DatabaseHelper4(this);

        Cursor datax = myDBxxx.getListContents();
        if (datax.getCount() == 0){

        }else{
            while(datax.moveToNext()){
                Listsx.add(datax.getString(1));

                ListAdapter listAdapterx = new ArrayAdapter<>(this,R.layout.todoactivity_item,R.id.textitem,Listsx);
                adapterx.notifyItemInserted(Listsx.size()-1);
            }
        }


        gorevo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(todoactivity.this);
                bottomSheetDialog.setContentView(R.layout.bottomsheetlayout3);
                bottomSheetDialog.show();
                InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
                EditText editText = bottomSheetDialog.findViewById(R.id.editx);
                Button ekle = bottomSheetDialog.findViewById(R.id.ekle);
                ekle.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        String text = editText.getText().toString();
                        Listsx.add(text);
                        AddDataxxx(text);
                        adapterx.notifyItemInserted(Listsx.size()-1);
                        bottomSheetDialog.hide();
                        inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(),0);
                    }
                });

            }
        });
        back=findViewById(R.id.back);
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(todoactivity.this, pomodoroscreen.class);
                startActivity(i);
                overridePendingTransition(0,0);
            }
        });



        ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT) {
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
                return false;
            }

            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {

                int positionx = viewHolder.getAdapterPosition();
                Listsx.remove(positionx);
                adapterx.notifyItemRemoved(positionx);
                int id = recyclerView.getChildAt(positionx).getId();
                myDBxxx.deleteItem(id);
               

}
};
        
        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
        itemTouchHelper.attachToRecyclerView(recyclerView);
    }

    public void AddDataxxx(String newEntry) {

        boolean insertDatax = myDBxxx.addDataxxx(newEntry);
    }


}

DatabaseHelper.java

public class DatabaseHelper4 extends SQLiteOpenHelper {

    public static final String DATABASE_NAME4 = "mylistxxx.db";
    public static final String TABLE_NAME4 = "mylist_dataxxx";
    public static final String COL14 = "iDxxx";
    public static final String COL24 = "ITEM1xxx";


    public DatabaseHelper4(Context context) {
        super(context, DATABASE_NAME4, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase dbxxx) {
        String createTable = "CREATE TABLE " + TABLE_NAME4 + " (iDxxx INTEGER PRIMARY KEY AUTOINCREMENT, " +
                " ITEM1xxx TEXT)";
        dbxxx.execSQL(createTable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase dbxxx, int oldVersion, int newVersion) {
        dbxxx.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME4);
        onCreate(dbxxx);
    }

    public boolean addDataxxx(String textt) {
        SQLiteDatabase dbxxx = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL24, textt);

        long result = dbxxx.insert(TABLE_NAME4, null, contentValues);

        if (result == -1) {
            return false;
        } else {
            return true;
        }
    }

    public Cursor getListContents() {
        SQLiteDatabase dbxxx = this.getWritableDatabase();
        Cursor dataxxx = dbxxx.rawQuery("SELECT * FROM " + TABLE_NAME4, null);
        return dataxxx;
    }
public void deleteItem(int iDxxx) {
    SQLiteDatabase db = getWritableDatabase();
    db.execSQL("DELETE FROM " + TABLE_NAME4 + " WHERE " + COL14 + " = " +
            iDxxx);
}


}

Адаптер.java

public class TodoActivityAdpter extends RecyclerView.Adapter<TodoActivityAdpter.Holder> {



    List<String>Listsx;
    public TodoActivityAdpter(List<String>itemxxx){
        this.Listsx = itemxxx;
    }
    @NonNull
    @Override
    public TodoActivityAdpter.Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.todoactivity_item,parent,false);
        Holder holder = new Holder(view);
        return holder;
    }
    @Override
    public void onBindViewHolder(@NonNull TodoActivityAdpter.Holder holder, int position) {
        holder.textView.setText(Listsx.get(position));


        holder.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.checkBox.isChecked()) {


                    holder.textView.setTextColor(view.getResources().getColor(R.color.grey));
                } else {
                    holder.textView.setTextColor(view.getResources().getColor(R.color.Color_black));
                }
            }
        });
    }
    @Override
    public int getItemCount() {
        return Listsx.size();
    }

    public class Holder extends RecyclerView.ViewHolder {

        CheckBox checkBox;
        TextView textView;

        List<String>Listsx;
        RecyclerView recyclerView;
        Context mContext;
        public Holder(View view) {
            super(view);

            textView=view.findViewById(R.id.text_viewx);
            checkBox=view.findViewById(R.id.checkbox);
            recyclerView=view.findViewById(R.id.recyclerviewxx);



        }
    }
}

Это мои классы Java. Моя деятельность — это тодоактивность. Мой SQliteopenhelper — это DatabaseHelper.java. Мой адаптер — adapter.java . Я могу удалить элемент в моем recyclerview, но я не могу удалить элемент в своей базе данных

Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Управление транзакциями JDBC - это мощная функция, которая позволяет рассматривать группу операций с базой данных как единую единицу работы. Оно...
Выполнение HTTP-запроса с помощью Spring WebClient: GET
Выполнение HTTP-запроса с помощью Spring WebClient: GET
WebClient - это реактивный веб-клиент, представленный в Spring 5. Это реактивное, неблокирующее решение, работающее по протоколу HTTP/1.1.
Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
0
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете легко удалить элемент из своей таблицы с помощью приведенного ниже кода.

//Добавить метод в класс вашей базы данных.

public void deleteItem(int iDxxx) {
    SQLiteDatabase db = getWritableDatabase();
    db.execSQL("DELETE FROM " + TABLE_NAME4 + " WHERE " + COL14 + " = 
" + iDxxx);
}

и просто вызовите этот метод из того места, где вы удаляете элемент.

спасибо, но что я добавлю в активность

TOGIY SOFTWARE 21.12.2020 06:31

Вызов вышеуказанного метода с идентификатором

Nadim Ansari 21.12.2020 06:34

Я пробовал это, но это не сработало myDBxxx.deleteItem(viewHolder.getAdapterPosition());

TOGIY SOFTWARE 21.12.2020 06:36

Я могу удалить это из своего списка, но я не могу удалить это из своей базы данных.

TOGIY SOFTWARE 21.12.2020 06:36

Позиция вашего адаптера создается вашим recyclerview. Вам нужен идентификатор (iDxxx), чтобы удалить его из вашей базы данных.

Nadim Ansari 21.12.2020 06:50

Но как я могу получить идентификатор

TOGIY SOFTWARE 21.12.2020 07:01

Можете ли вы сгенерировать еще один вопрос для него. это отличается от вашего текущего вопроса. Я добавлю туда свой ответ. На самом деле вы получите данные о конкретных элементах от адаптера.

Nadim Ansari 21.12.2020 07:11

Или вы можете выполнить поиск в разделе «Как получить определенные данные из адаптера». Если вы создаете новый вопрос, поделитесь ссылкой на свой вопрос здесь.

Nadim Ansari 21.12.2020 07:16

это не работает

TOGIY SOFTWARE 21.12.2020 10:46

Я могу посмотреть сейчас. Я отредактировал свой Вопрос. Можете посмотреть мои коды. Я все еще не могу удалить элемент в моем помощнике по базе данных

TOGIY SOFTWARE 21.12.2020 10:49

если вы передадите что-то другое вместо своего идентификатора, это не сработает. в Android у вас есть инспектор баз данных. посмотрите там свой идентификатор и попробуйте указать свой идентификатор в этом методе и посмотрите, работает этот код удаления или нет.

Nadim Ansari 21.12.2020 10:56

этот метод проверен мной. и это работает хорошо. но вы отправляете что-то другое вместо идентификатора, как это будет работать. Это не может работать чем-то. Он может только удалять данные из вашей существующей базы данных.

Nadim Ansari 21.12.2020 10:57

Мой ответ правильный, он не работает, потому что ваша позиция отправки не идентифицирована. Как ваш идентификатор может быть вашей позицией?

Nadim Ansari 21.12.2020 11:04

добавьте существующий идентификатор вручную и посмотрите, удаляется ваш элемент из базы данных или нет.

Nadim Ansari 21.12.2020 11:05

хорошо, я попробую это

TOGIY SOFTWARE 21.12.2020 11:11

Да, это работает, я добавляю «1» для id. это работа успешная

TOGIY SOFTWARE 21.12.2020 11:13

Что касается вашего вопроса, мой ответ идеален. у тебя другая проблема. вы не получаете идентификатор здесь, вам это нужно. Мой ответ идеален, пожалуйста, примите его.

Nadim Ansari 21.12.2020 11:17

Хорошо я посмотрю

TOGIY SOFTWARE 21.12.2020 11:18

Другие вопросы по теме