我想向数据库添加STRiNG t,但是在OnClick View上我无法通过将其添加到数据库中的说明,我在该行上遇到错误
GestioneDB db =新的GestioneDB(this);
错误是“无法应用GestioneDB”
我使用了一个recyclerview来显示10,我需要将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 ());
}
}
}
答案 0 :(得分:0)
在类ViewHolder
中添加方法bingItem(String item)
,当该方法称为该方法内部的更新TextView mdevice
并将String item
存储在ViewHolder
中时,在其中添加一个字段String currentItem
并将其存储在此处。
现在,在您的onClick
中写上t = currentItem;
,然后单击项目。
如果要将其添加到db,则应将监听器从活动传递到适配器,然后传递给holder,然后调用该监听器,因为它是从活动传递的,所以它可以具有上下文(或数据库引用),因此您可以您需要将其保存在数据库中的所有内容。
答案 1 :(得分:0)
您可以通过这种方式在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
}
});