如何使用RecyclerView在适配器中设置setOnClickListener以显示片段内部

哈立德

我无法访问该项目的ID以在ToastMessage中查看它,甚至无法将其存储在我尝试过的数据库中(使用Room DataBase),但该消息没有出现,我需要参考ID才能用于数据库存储并完成以下过程存放购物车

itemAdapter.java

public class itemAdapter extends RecyclerView.Adapter<itemAdapter.ItemViewHolder> {
    private Context context;
    private ArrayList<Items> arrayList;
    private AdapterView.OnItemClickListener listener;
    public itemAdapter(Context context, ArrayList<Items> arrayList) {
        this.context = context;
        this.arrayList = arrayList;
    }

    @NonNull
    @Override
    public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
        return new ItemViewHolder(v);
    }


    @Override
    public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
        holder.name.setText(arrayList.get(position).getItemName());
        holder.desc.setText(arrayList.get(position).getItemDesc());
        holder.price.setText(arrayList.get(position).getItemPrice());
        holder.add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context,arrayList.get(position).getItemIid(),Toast.LENGTH_SHORT);
            }
        });
        holder.name.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context,arrayList.get(position).getItemPrice(),Toast.LENGTH_SHORT);
            }
        });

    }

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

    class ItemViewHolder extends RecyclerView.ViewHolder {

        TextView name, desc, price;
        ImageView remove, add;

        public ItemViewHolder(@NonNull View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.tvName);
            desc = itemView.findViewById(R.id.tvDesc);
            price = itemView.findViewById(R.id.tvPrice);
            remove = itemView.findViewById(R.id.btnDelete);
            add = itemView.findViewById(R.id.btnAdd);
        }
    }
   
}

MealsFragment.java

公共类MealsFragment扩展Fragment {

public MealsFragment() {
    // Required empty public constructor
}

RecyclerView recyclerView;
itemAdapter adapter;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_meals, container, false);
}

@Override
public void onViewCreated( View view, Bundle savedInstanceState) {
    ArrayList<Items> ItemsList = (ArrayList<Items>) RoomDatabaseSingleton.getInstance(getContext().getApplicationContext())
            .getAppDatabase()
            .getDao()
            .getItems("meals");
    recyclerView = view.findViewById(R.id.rvMeals);
    RecyclerView.LayoutManager manager = new LinearLayoutManager(
            getContext(), RecyclerView.VERTICAL, false);
    recyclerView.setLayoutManager(manager);
    adapter = new itemAdapter(getContext(), ItemsList);
    recyclerView.setAdapter(adapter);

}

}

斧头

尝试以下方法

       holder.add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context,arrayList.get(position).getItemIid(),Toast.LENGTH_SHORT).show();
            }
        });
        holder.name.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context,arrayList.get(position).getItemPrice(),Toast.LENGTH_SHORT).show();
            }
        });

静态方法makeTextToast用于创建的Toast对象,并show()在上方法Toast对象用于显示吐司

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在适配器的底部工作表片段中设置TextView占位符

想要在片段中使用回收站视图。设置适配器时显示适配器,显示错误

适配器中的Android RecyclerView显示问题

在片段中为ListView设置适配器

在RecyclerView适配器中设置自定义字体

如何在片段中调用RecyclerView适配器的方法

从recyclerView适配器调用片段

在RecyclerView适配器中显示sharedpreference

从适配器RecyclerView打开片段

RecyclerView适配器如何高亮显示文本

在片段内部使用RecyclerView而不是Activity会导致E / RecyclerView:未连接适配器;跳过布局错误

RecyclerView:未连接适配器;跳过片段中的布局

如何从片段验证recyclerview适配器TextInputEditText?

如何从Recyclerview适配器的片段之间传递数据

如何从片段中的RecyclerView适配器启动活动

即使设置了适配器,RecyclerView也不会显示

MVVM设置带有片段中的项目的Recyclerview适配器

Jetpack导航:如何从recyclerview适配器打开新片段?

ListView设置适配器片段nullpointerexception

在RecyclerView适配器中显示FragmentDialog

从片段通知RecyclerView适配器

在片段中设置适配器

在不带xml的RecyclerView适配器中设置边距

使用getActivity设置适配器导致片段崩溃

如何设置适配器以显示 ListFragment

如何从适配器设置 startActivityForResult 并在 viewPager 片段中获取结果

如何为 RecyclerView 适配器设置监听器?

如何从 recyclerview 适配器关闭对话框片段

如何在片段中使用 recyclerview 适配器布局对象?