在我的recyclerview
adapter
中,我将onClick定义为:
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "View Clicked: "+Double.toString(position)+", "+current.getPlace(),
Snackbar.LENGTH_LONG).show();
}
});
此视图包含地点的latitude
和longtidue
。现在,我的目标是将LatLng传输到MapFragment上的OnActivityResult以显示地图。
在我的地图片段中,我已经有一个onActivityResult:
int PLACE_PICKER_REQUEST = 1;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
} catch(GooglePlayServicesRepairableException |
GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
return true;
}
// Get LatLng from placePicker
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == Activity.RESULT_OK) {
Place place = PlacePicker.getPlace(data, getContext());
String toastMsg = String.format("Place: %s", place.getName());
System.out.println(place);
Snackbar.make(getView(), toastMsg, Snackbar.LENGTH_LONG).show();
latlang.Lat = place.getLatLng().latitude;
latlang.Lang = place.getLatLng().longitude;
addMarker(place);
....
}
由于我是java的新手,我无法解决如何将数据从适配器获取到此onActivityResult
。
伪代码将非常有用。
答案 0 :(得分:0)
我有同样的问题,我通过发送广播
这样实现1,从你有纬度,经度的地方发送广播。
Intent intente = new Intent("visible_text");
intente.putExtra("lati", coordl1);
intente.putExtra("longi", coordl2);
intente.putExtra("name", strAddress);
intente.putExtra("from", "drop");
sendBroadcast(intente);
finish();
2,现在无论你想要什么,你都可以进入你的片段/ adepter #Register在简历中播放如下,
@Override
protected void onResume() {
super.onResume();
registerReceiver(broadcast_reciever_visible_text,newIntentFilter("visible_text"));
}
3,现在在ondestroy方法中取消注册接收器,如下所示
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(broadcast_reciever_visible_text);
}
4,现在你从接收器获得纬度或经度,它可能是全球性的,如下面
BroadcastReceiver broadcast_reciever_visible_text = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent intent) {
String action = intent.getAction();
if (action.equals("visible_text")) {
if (MyUtills.isNetworkAvailable(MainActivity.this)) {
lati = intent.getExtras().getString("lati");
longi = intent.getExtras().getString("longi");
location_name = intent.getExtras().getString("name");
TAG_FROM = intent.getExtras().getString("from");
}
}
}
};
现在我希望你实现这个并开展快乐编码...