Не работает метод на Swipe exe cSQL, как исправить? - PullRequest
0 голосов

По какой-то причине перестала работать эта строка java db.exe cSQL java ("DELETE FROM pizzaOrders WHERE _id IN (" + id + ")"); хотя и работала раньше, но я не могу вспомнить, что я изменил, а затем перестала работать. Вот уже час пытаюсь понять, в чем дело. В итоге понял, что эта строчка не банально, но при этом проверяется на синтаксис, а не на logi c. То есть, если что-то написано неправильно, это выдаст синтаксическую ошибку, но не проверяет logi c, то есть когда я хочу удалить строку, ничего не происходит, даже когда я пытаюсь удалить строку с индексом -10 (хотя индексы go с 0) ничего не выходит и программа продолжает работать так, как будто этой строки нет. И если индекс правильный, программа также не выполняет эту строку. Вот код активности:

public class AdminPage extends Activity {

    private static AdapterAdminPage adapterAdminPage;
    private RecyclerView recyclerView;
    private static ArrayList<Integer> id;
    private static ArrayList<String> name;
    private static ArrayList<String> phone;
    private static ArrayList<String> address;
    private static ArrayList<String> pizzas;
    private TextView t;
    WorkBD workBD;
    private Cursor cursor;
    private static boolean b;

    @Override

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.admin_page);
        workBD = new WorkBD(this);
    }

    public void Refresh(View v){
        getItemForAdapter();
    }

    private void getItemForAdapter(){
        id = new ArrayList<>();
        name = new ArrayList<>();
        address = new ArrayList<>();
        phone = new ArrayList<>();
        pizzas = new ArrayList<>();
        SQLiteDatabase db = workBD.getReadableDatabase();
        cursor = db.query(WorkBD.TABLE_CONTACTS, null,null,null,null,null,null);
        cursor.moveToFirst();
        do{
            try {
                id.add(cursor.getInt(cursor.getColumnIndex(WorkBD.KEY_ID)));
                String pizza1 = "Пепперони: " + Integer.toString(cursor.getInt(cursor.getColumnIndex("pizza1"))) + "\n";
                String pizza2 = "Кальцоне: " + Integer.toString(cursor.getInt(cursor.getColumnIndex("pizza2"))) + "\n";
                String pizza3 = "Четыре сезона: " + Integer.toString(cursor.getInt(cursor.getColumnIndex("pizza3"))) + "\n";
                String pizza4 = "Четыре сыра: " + Integer.toString(cursor.getInt(cursor.getColumnIndex("pizza4"))) + "\n";
                String pizza5 = "Мексиканская: " + Integer.toString(cursor.getInt(cursor.getColumnIndex("pizza5"))) + "\n";
                name.add(cursor.getString(cursor.getColumnIndex(WorkBD.KEY_NAME)));
                phone.add(cursor.getString(cursor.getColumnIndex(WorkBD.KEY_NUMBER)));
                address.add(cursor.getString(cursor.getColumnIndex(WorkBD.KEY_ADDRESS)));
                pizzas.add(pizza1 + pizza2 + pizza3 + pizza4 + pizza5);
            }

            catch (Exception e){
                t = findViewById(R.id.NoOrders);
                t.setText("ПОКА \n НЕТ \n ЗАКАЗОВ \n :/ \n \n \n");
            }
        }
        while (cursor.moveToNext());
        if(b){
            adapterAdminPage.refreshData(name,phone,address,pizzas);
            b = false;
        }
        else
            setAdapterAdminPage();
    }

    private void setAdapterAdminPage(){
        recyclerView = findViewById(R.id.AdminRecyclerView);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        adapterAdminPage = new AdapterAdminPage(name,phone,address,pizzas);
        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemTouchHelperCallback);
        recyclerView.addItemDecoration(itemTouchHelper);
        itemTouchHelper.attachToRecyclerView(recyclerView);
        recyclerView.setAdapter(adapterAdminPage);
    }


    private final ItemTouchHelper.Callback itemTouchHelperCallback = new ItemTouchHelper.Callback() {

        @Override
        public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
            return makeMovementFlags(ItemTouchHelper.END, ItemTouchHelper.END);
        }

        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
            SQLiteDatabase db = workBD.getReadableDatabase();
            int id = (int)viewHolder.getAdapterPosition()-10;
            Log.i(TAG, Integer.toString(id));
            db.execSQL("DELETE FROM pizzaOrders WHERE _id IN (" + id + ")");
            Log.i(TAG, "DELETE FROM pizzaOrders WHERE _id IN (" + id + ")");
            b = true;
            getItemForAdapter();
            Log.i(TAG, "onSwiped");
        }
    };
}

Bd java

public class WorkBD extends SQLiteOpenHelper {

    public static final int DATABASE_VERSION = 4;
    public static final String DATABASE_NAME = "pizzaDb.db";
    public static final String TABLE_CONTACTS = "pizzaOrders";

    public static final String KEY_ID = "_id";
    public static final String KEY_NAME = "name";
    public static final String KEY_NUMBER = "number";
    public static final String KEY_ADDRESS = "address";
    public static final String KEY_PIZZA1 = "pizza1";
    public static final String KEY_PIZZA2 = "pizza2";
    public static final String KEY_PIZZA3 = "pizza3";
    public static final String KEY_PIZZA4 = "pizza4";
    public static final String KEY_PIZZA5 = "pizza5";



    public WorkBD(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE_CONTACTS + " (" + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_NAME + " TEXT, " + KEY_NUMBER + " TEXT, "+ KEY_ADDRESS + " TEXT, " + KEY_PIZZA1 + " TEXT, " +  KEY_PIZZA2 + " TEXT, " + KEY_PIZZA3 + " TEXT, " + KEY_PIZZA4 + " TEXT, " + KEY_PIZZA5 + " TEXT "+ " )");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
        onCreate(db);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...