我想在回收器视图中单击项目时传递先前活动的数据,并在编辑文本上显示。
这是我用来将数据从listview传递到上一个活动的代码
我想用Recyclerview做同样的事情
//调用第二个活动
public static final int REQUEST_CODE = 100;
Intent dateintent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(dateintent, REQUEST_CODE);
// onClick 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);
}
}
}
}
答案 0 :(得分:1)
首先创建此接口
public interface RunnableValue {
public void run(Object obj);
}
2.This MainActivity add
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<String> 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;
}
}
答案 1 :(得分:0)
按照雅各布的解决方案here。这为RecyclerView添加了监听器。然后,执行与在ListView中完成的操作相同的操作。
答案 2 :(得分:0)
setOnItemClickListener
中没有RecyclerView
,因此您需要在RecyclerView
adaper中创建自己的点击监听器,只需查看post,然后您就应该能够成功。
希望这有帮助!
答案 3 :(得分:0)
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;
}
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();
}
}
});
应该这样做。如果您有任何疑问,请随时提出!