android - 如何使用从适配器到其他类的捆绑包?
问题描述
我的情况是使用从适配器到活动类的数据。代码可以是-
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 读取数据的关键。
解决方案
因此,您必须在 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
}
推荐阅读
- gcc - 如何使用 CMake 和 Gfortran 错误读取 stracktrace
- python-3.x - 从另一个 QMainWindow 打开一个 QMainWindow
- python - Python:exec() 和对象列表
- python - Python/Pandas - 在将 Shapefile 导入到 GeoDataFrame 期间修剪的长字符串
- exception - 匹配 OCaml 中的两个文件
- angular - 打字稿/角度:关闭在会话中其他地方打开的选项卡
- javascript - 在 Google-App 脚本中对表数据进行排序
- apache-spark - 框架过大问题:spark 1.6 中的 17882426381
- java - 从 Pub/Sub 到 ElasticSearch 的 Apache Beam 流式传输
- python - 如何仅注释 seaborn 热图的对角线元素