передать данные выбранной строки в OnContextItemSelected для выполнения удаления базы данных - PullRequest
0 голосов
/ 03 июня 2018

Таким образом, есть recyclerViewAdapter, который заполняет данные из RoomDB и показывает их.когда пользователь долго щелкает каждую строку и выбирает удалить, я хочу выполнить запрос на удаление.Как я должен извлечь данные выбранной строки (например, имя или идентификатор) и получить их в моей MainActivity в OnContextItemSelected, чтобы я мог удалить их из моей базы данных?-Спасибо

 private StudentViewHolder(View itemView) {
        super(itemView);
        nameItemView = itemView.findViewById(R.id.nameTextView);
        numberItemView = itemView.findViewById(R.id.numberTextView);
        imageItemView = itemView.findViewById(R.id.profile_image);
        idItemView = itemView.findViewById(R.id.idView);
        itemView.setOnCreateContextMenuListener(this);        }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {

        menu.setHeaderTitle("Select Action");
        menu.add(Menu.NONE,0,getAdapterPosition(),"Delete");
        menu.add(Menu.NONE,1,getAdapterPosition(),"Update");
    }

MainActivity.java Я много чего перепробовал, но не смог найти подсказку.

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();????
    Log.e(,"info ="+ info);
    Student student = mStudentViewModel.getAllStudents().getValue().get(item.getGroupId());?????
    Student student1 = adapter.getClass().geti?????
    switch (item.getGroupId()){?????
        case 0 :
            break;

        case 1:
              break;
    }
    return true;
}

1 Ответ

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

Мне удалось выполнить запрос на удаление, когда пользователь перелистывает программу recyclerView, переопределив onSwiped!

            @Override
            public void onSwiped(RecyclerView.ViewHolder viewHolder,
                                 int direction) {
                int position = viewHolder.getAdapterPosition();
                S s;
                s= adapterAll.getSAtPosition(position);

                // Delete
                mStudentViewModel.delete(s);

            }
        });
...