Должен ли я использовать дополнительный массив для эффективных операций с данными при использовании Sqlite db с обзорами переработчиков? - PullRequest
0 голосов
/ 24 июня 2018

Надеюсь на простые вопросы.

1) Мне удалось получить данные из Sqlite db и показать их в обзоре переработчика.Вопрос, например, заключается в том, что, когда я нажимаю на элементы в окне реселлера и выполняю некоторые операции (например, копирование содержимого или обновление), лучше ли использовать массив и получать данные в первую очередь при загрузке приложения, а затем выполнять операции с элементами этого массива (затемв конце концов, уведомив db)?

2) Если нет необходимости в дополнительном массиве для операций onContextItemSelected () при повторном нажатии на элементе recyclerview, у меня возникли проблемы при выборе элемента и его значений.

public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.idshare :
            //implicit intent
            shareImplicitIntent();
            return true;

......

для метода shareImplicitIntent ()

private void shareImplicitIntent() {
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    Cursor cursor=WordListOpenHelper.mReadableDB.rawQuery("SELECT * FROM 
    diary", null);
    cursor.moveToPosition(XYZ);
    Entry_Model entry_model= new Entry_Model();
    entry_model.setmEntry(cursor.getString(cursor.getColumnIndex(WordListOpenHelper.KEY_ENTRY)));
    String title = entry_model.getmEntry(); ......

, в основном с использованием курсора и получением заголовка курсора в позиции XYZ.

Но как мне выбрать эту позицию XYZ?

Рабочее время на нем, но не смог найти подсказку.Пожалуйста, помогите мне. Большое спасибо

1 Ответ

0 голосов
/ 03 июля 2018

Чтобы ответить на мой вопрос сам, вкратце нет, например, для получения ввода от пользователя и помещения его в массив, а затем выполнения операций над базой данных над списком не очень полезных и ненужных. (Тем не менее, если в вашей базе данных планируется хранить только небольшое количество записей, вы можете использовать arraylist / linkslists для быстрых манипуляций с CRUD на адаптереviewler).

Что касается второй части вопроса, то легко скопировать содержимое выбранного элемента recyclerview, например, путем создания setonclicklistener в конструкторе виджета innerclass-виджета; (обратите внимание, что в отличие от примера вам не нужно использовать Contentresolver, если вы не планируете передавать данные в базе данных другим приложениям)

itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                int pos =getAdapterPosition();
                String entry = "";
                String[] mProjection =
                        { Contract.WordList.KEY_ENTRY,    // Contract class constant for the _ID column name  };




                Cursor cursor = mContext.getContentResolver().query(Uri.parse(
                        queryUri), mProjection, null, null, sortOrder);

                if (cursor != null) {
                    if (cursor.moveToPosition(pos)) {
                        int indexEntry = cursor.getColumnIndex(Contract.WordList.KEY_ENTRY);
                        entry = cursor.getString(indexEntry);


                    }
                }


                Toast.makeText(v.getContext(), "copied entry is " + entry, Toast.LENGTH_LONG).show();

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