Recyclerview элемент onclick в базу данных

Я хочу добавить STRiNG t в базу данных, но OnClick View не могу передать инструкции по добавлению его в базу данных. Я получаю сообщение об ошибке в этой строке.

База данных GestioneDB = новая GestioneDB (это);

ошибка "GestioneDB не может быть применена"

Я использовал recyclerview для показа десяти, и мне нужно передать элемент onclick в базу данных с помощью

t = lista_show.get (getAdapterPosition ());

class MainAdapter extends RecyclerView.Adapter <MainAdapter.ViewHolder> {

private Context context;
    ArrayList<String> lista_show;


    public MainAdapter(ArrayList<String> lista_shows) {
        lista_show = lista_shows;
    }


    @Override
    public MainAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from (parent.getContext ()).inflate (R.layout.row,parent,false);
        return new ViewHolder (view);
    }

    @Override
    public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) {
        holder.mdevice.setText (lista_show.get (position));

    }

    @Override
    public int getItemCount() {
        return lista_show.size ();
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        public TextView mdevice;


        public ViewHolder( View itemView) {
            super (itemView);
            itemView.setOnClickListener (this);
            mdevice = itemView.findViewById (R.id.device);



        }


        @Override
        public void onClick(View v) {

            String t;
            t = lista_show.get (getAdapterPosition ());

        }
    }


}

public MainAdapter (ArrayList<String> lista_shows, Context context) { lista_show = lista_shows; }

Developers 30.04.2019 10:58

Я получил ошибку при основной активности на lista_show.

Developers 30.04.2019 10:59

Хорошо, мне нужно передать MainActivity в New MainAdpater(lista_show, MainActivity. This)?

Developers 30.04.2019 11:03
1
3
236
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В классе ViewHolder добавьте метод bingItem(String item), когда этот метод вызывается, обновите TextView mdevice внутри этого метода и сохраните String item в ViewHolder, добавьте туда одно поле String currentItem и сохраните его там.

Теперь в вашем onClick напишите t = currentItem; и вы нажали элемент.

Если вы хотите добавить его в БД, вы должны передать прослушиватель из активности в адаптер, а затем в держатель, а затем вызвать этот прослушиватель, поскольку он передается из активности, он может иметь контекст (или ссылку на БД), поэтому у вас есть все, что вам нужно чтобы сохранить его в БД.

Моя проблема заключается в запуске прослушивателя onclick для MainActivity для элемента recyclerview.

Developers 30.04.2019 11:00
Ответ принят как подходящий

вы можете сделать это, чтобы получить положение адаптера в вашем onBindViewHolder: -

holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              String t = String.valueOf(position);
              // now you can use t where you want
            }
        });

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