Recyclerview onclick项目到数据库

时间:2019-04-30 08:37:09

标签: android database android-recyclerview

我想向数据库添加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 ());

        }
    }


}

2 个答案:

答案 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
            }
        });