Как получить строку из моей таблицы sql из столбца идентификатора с помощью курсора в студии android - PullRequest
0 голосов
/ 27 января 2020

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

     reminderList = new ArrayList<>();
        final Cursor data = myDB.getListContents();
        int numRows = data.getCount();

        if(numRows==0) {
            Toast.makeText(ReminderList.this,"Empty Database " ,Toast.LENGTH_SHORT).show();
        } else {
            while(data.moveToNext()) {
                item = new Item(data.getString(0),data.getString(2),data.getString(3));
                reminderList.add(item);
            }

            adapter = new ListAdapter(this,R.layout.reminder_list,reminderList);
            listView = findViewById(R.id.listView);
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, final int position, long id) {

                    AlertDialog.Builder alertBuilder = new AlertDialog.Builder(ReminderList.this);
                    alertBuilder.setTitle("Delete?");
                    alertBuilder.setMessage("Are You Sure You Wanna Delete? ");
                    final int positionToRemove = position;
                    final String idtoDelete = data.getString(0); //**This code is not working** // **data is the cursor and 0 is the index of ID**
                    alertBuilder.setNegativeButton("Cancel",null);
                    alertBuilder.setPositiveButton("Ok", new AlertDialog.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {

                            //String Cols = data.get;
                            Integer deletedRows =  myDB.deleteData(idtoDelete);//**I want to fetch the id from sql table(using cursor) from item clicked and put it here**
                            if(deletedRows > 0)
                            {
                                Toast.makeText(ReminderList.this,"Data Deleted",Toast.LENGTH_SHORT).show();
                            }
                            else
                                Toast.makeText(ReminderList.this,"Data Not Deleted",Toast.LENGTH_SHORT).show();

                            adapter.notifyDataSetChanged();
                        }
                    });
                    alertBuilder.show();

                }
            });
        }

Это класс DatabaseHelper. Я хочу получить идентификатор Col1, используя класс курсора

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "mylist.db";
    public static final String TABLE_NAME = "mylist_data";
    public static final String COL1 = "ID";
    public static final String COL2 = "EVENT";
    public static final String COL3 = "TIME";
    public static final String COL4 = "DATE";


    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
                " EVENT TEXT, TIME TEXT, DATE TEXT)";
        db.execSQL(createTable);
    }

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


    public boolean addData(String event1, String time1, String date1) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL2, event1);
        contentValues.put(COL3, time1);
        contentValues.put(COL4, date1);

        long result = db.insert(TABLE_NAME, null, contentValues);

        //if data is inserted incorrectly it will return -1
        if (result == -1) {
            return false;
        } else {
            return true;
        }
    }

    public Integer deleteData(String id){
        SQLiteDatabase db = this.getWritableDatabase();
        return db.delete(TABLE_NAME,"ID = ?",new String[] {id} );

    }

    public Cursor getListContents(){
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
        return data;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...