Я хочу добавить 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 ());
}
}
}
Я получил ошибку при основной активности на lista_show.
Хорошо, мне нужно передать MainActivity в New MainAdpater(lista_show, MainActivity. This)?
В классе ViewHolder добавьте метод bingItem(String item), когда этот метод вызывается, обновите TextView mdevice внутри этого метода и сохраните String item в ViewHolder, добавьте туда одно поле String currentItem и сохраните его там.
Теперь в вашем onClick напишите t = currentItem; и вы нажали элемент.
Если вы хотите добавить его в БД, вы должны передать прослушиватель из активности в адаптер, а затем в держатель, а затем вызвать этот прослушиватель, поскольку он передается из активности, он может иметь контекст (или ссылку на БД), поэтому у вас есть все, что вам нужно чтобы сохранить его в БД.
Моя проблема заключается в запуске прослушивателя onclick для MainActivity для элемента recyclerview.
вы можете сделать это, чтобы получить положение адаптера в вашем 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
}
});
public MainAdapter (ArrayList<String> lista_shows, Context context) { lista_show = lista_shows; }