返回上一个Activity,其中有一些`put extra` onClick of recyclerView Item

我想通过单击Recycler视图中的Item传递先前活动的数据,并在编辑文本上显示它。

这是我用于将数据从listview传递到上一个活动的代码

我想用Recyclerview做同样的事情

//调用第二个活动

public static final int REQUEST_CODE = 100; Intent dateintent = new Intent(MainActivity.this, SecondActivity.class); startActivityForResult(dateintent, REQUEST_CODE); 

// onview of listview将数据传递回上一个活动

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { TextView txt = (TextView) view.findViewById(R.id.textView); String str = txt.getText().toString(); Intent intent = new Intent(); intent.putExtra("data",str); setResult(RESULT_OK,intent); finish(); } 

});

//获取数据后,在第一个活动编辑框中显示数据

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE) { if (resultCode == RESULT_OK) { String data= data.getStringExtra("data"); if (data!= null) { edittext.setText(data); } } } 

}

首先创建此接口

 public interface RunnableValue { public void run(Object obj); } 

2.这个MainActivity添加

  RunnableValue run=new RunnableValue() { @Override public Bundle run(Object obj) { String str = obj.toString(); Intent intent = new Intent(); intent.putExtra("data",str); setResult(RESULT_OK,intent); finish(); } }; mAdapter = new SearchAdapter(dataSet,run); 
  1. 这个RecyclerView适配器

     public SearchAdapter(List dataSet,RunnableValue runnableValue) { mDataSet = dataSet; this.runnableValue=runnableValue; } public static class SearchHolder extends RecyclerView.ViewHolder { private final TextView textView; public SearchHolder(View v) { super(v); v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { runnableValue.run(getTextView().toString()); } }); textView = (TextView) v.findViewById(R.id.txtSearchItem); } public TextView getTextView() { return textView; } 

    }

在这里遵循雅各布的解决方案。 这为RecyclerView添加了监听器。 然后,执行与在ListView中完成相同的操作。

RecyclerView没有setOnItemClickListener ,因此您需要在RecyclerView adaper中创建自己的点击监听器,只需查看post ,然后您就可以制作它。

希望这有帮助!

RecyclerView没有像其前身ListView那样的setOnItemClickListener。 但是,这不应该妨碍我们做我们想做的事情。 因此,我们重新发明轮子并为您的RecyclerView创建我们自己的OnItemClickListener。 这是一步一步的指南。

  1. 通过使用名为onItemClick的空方法创建一个名为OnItemClickListener.java的新文件,创建一个名为OnItemClickListener的接口

     public interface OnItemClickListener { public void onItemClick(View view , int position); } 
  2. 在适配器中创建一个名为的静态变量

     static OnItemClickListener mItemClickListener; 
  3. 在您的自定义ViewHolder中设置onClickListener ,并调用我们的onItemClick方法,如此

     @Override public void onClick(View view) { mItemClickListener.onItemClick(view, getPosition()); } 
  4. 在适配器类中创建一个名为SetOnItemClickListener的公共方法

     public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) { this.mItemClickListener = mItemClickListener; } 
  5. 自定义RecyclerView适配器上的SetOnItemClickListener

     ((NameOfYourAdapter) mAdapter).SetOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(View view, int position) { if(view != null) { TextView txt = (TextView) view.findViewById(R.id.textView); String str = txt.getText().toString(); Intent intent = new Intent(); intent.putExtra("data",str); setResult(RESULT_OK, intent); //close this Activity... finish(); } } }); 

应该这样做。 如果您有任何问题随时问!