我的情况是使用从适配器到活动类的数据。 代码可以是 -
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读取数据的密钥。
答案 0 :(得分:0)
因此,您必须在Recycler View上设置onClickListener。当用户单击某个项目时,将其位置和quesNum传递给主要活动,并使用intent将它们传递给另一个活动。使用接口在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
}
答案 1 :(得分:0)
好的..我做了那个@Raj,&得到了MainActivity的值,但在将其再次发送到其他活动时,我得到了空指针异常。这是代码:
MainActivity
@Override public void onClick(String quesNum) {
//Toast.makeText(this, ""+quesNum, Toast.LENGTH_SHORT).show();
Intent in = new Intent(MainActivity.this, UserResponseListActivity.class);
getIntent().putExtra("quesNum",""+quesNum);
startActivity(in);
关于其他活动:
Bundle b = getIntent().getExtras();
String qvalue = (String) b.get("quesNum"); //error line
但问题是使用LocalBroadcastManager解决的。
适配器:
Intent intent = new Intent("ques");
intent.putExtra("qn",quesNumb);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
目标活动:
onCreate(Bundle savedInstanceState){
...
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("ques"));
}
public BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String qvalue = intent.getStringExtra("qn");
Toast.makeText(UserResponseListActivity.this,"Number"+qvalue ,Toast.LENGTH_SHORT).show();
}
};
那有效但不知道为什么我的第一个解决方案会出现空指针异常,这也应该有效,对吧?任何的想法? @Raj