首页 > 解决方案 > 如何使用从适配器到其他类的捆绑包?

问题描述

我的情况是使用从适配器到活动类的数据。代码可以是-

Intent in = new Intent(context, TargetActivity.class);
getIntent().putExtra("mykey", myVariable);
startActivity(in);

但我不希望在该事件中打开 TargetActivity。只需要传递值。

这个也试过了——

     Bundle b = new Bundle();
     b.putString("mykey", ""+myvariable);
     Obj.setArguments(b);

在使用目标 fragment_obj 将数据从活动传递到片段的情况下,我使用了上述方法。但是如何实现这一点(适应活动)。帮帮我。

这是我来自 RecyclerView 适配器的 onBindViewHolder 的代码

 @Override
 public void onBindViewHolder(MyViewHolder holder, final int position) {

    final MyQues mq = qdatalist.get(position);
    holder.tv_qid.setText(mq.getqNo()+"");
    holder.tv_quesOnList.setText(mq.getQues());

    String quesNum = mq.getqNo()+"";

现在我接下来想要将 String quesNum 的值发送到其他活动,从那里我必须使用该键从 firebase 读取一些数据。我不能从那里的数据库模型中获取它,因为仅基于位置使用该密钥进一步生成了 firebase 密钥。因此,我必须使用它来读取根据位置而变化的内容。

因此尝试将其发送到其他活动,我将使用它作为从 firebase 读取数据的关键。

标签: android

解决方案


因此,您必须在 Recycler View 上设置 onClickListener。当用户单击一个项目时,将其位置和 quesNum 传递给主要活动,并使用意图将它们传递给另一个活动。使用接口在 Recycler 视图上实现点击监听。

在您的适配器类中,创建接口以设置单击侦听器并执行以下操作:-

public class Holder extends RecyclerView.ViewHolder
    {
        public TextView tv;

        public Holder(View itemView)
        {
            super(itemView);

            tv = itemView.findViewById(R.id.textView);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {
                    if(listener != null)
                    {
                        int position = getAdapterPosition();

                        if(position != RecyclerView.NO_POSITION)
                        {
                            listener.onItemClicked(position, OTHER_VALUE);
                        }
                   }
                }
            }
        }
 }

在你的主要活动中做:

public void onItemClicked(int position, String value)
    {
       // Toast.makeText(this, "You Clicked " + position, Toast.LENGTH_SHORT).show();

      //Create Intent Here

    }

推荐阅读