返回上一个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);
-
这个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。 这是一步一步的指南。
-
通过使用名为onItemClick的空方法创建一个名为OnItemClickListener.java的新文件,创建一个名为OnItemClickListener的接口 。
public interface OnItemClickListener { public void onItemClick(View view , int position); }
-
在适配器中创建一个名为的静态变量
static OnItemClickListener mItemClickListener;
-
在您的自定义ViewHolder中设置onClickListener ,并调用我们的onItemClick方法,如此
@Override public void onClick(View view) { mItemClickListener.onItemClick(view, getPosition()); }
-
在适配器类中创建一个名为SetOnItemClickListener的公共方法
public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) { this.mItemClickListener = mItemClickListener; }
-
自定义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(); } } });
应该这样做。 如果您有任何问题随时问!