java - 如何保存来自 JSON Url 的数据并将其传递给另一个活动?
问题描述
我需要从 json url 保存数据并将其传递给另一个活动。在 onInfoWindowClick 函数中,我需要从变量 WINERIES 中定义的 URL 传递数据。我需要将包含某个酒厂所有详细信息的活动链接到信息窗口。如果我使用 Intent 和静态对象传递数据,它可以工作,但是使用来自 json url 的数据,结果为空。我尝试了不同的方法和插件,但没有找到好的结果。我需要线程吗?有人可以帮助我吗?
public class Map extends Home implements OnMapReadyCallback {
private DrawerLayout drawer;
private ActionBarDrawerToggle toggle;
private String JSON_URL = "https://www.vagabondidelgusto.com/APP-MOBILE/API/api.php?type_api=factories&idArea=1&user_agent=Android",MAP_URL="",CAT_URL= "https://www.vagabondidelgusto.com/APP-MOBILE/API/api.php?type_api=restaurants&user_agent=Android&idArea=1";
String URL = "https://www.vagabondidelgusto.com", WINERIES = "";
ArrayList listView;
ArrayList<String> markerPlaces;
Hashtable<String, Boolean> markerSet = new Hashtable<>();
String type = "", address = "", name = "", image_prod, id="", idMap = "";
Double longitude, latitude;
TextView title;
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
markerPlaces = new ArrayList<>();
listView = new ArrayList<>();
Toolbar mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
title = findViewById(R.id.toolbar_title);
title.setText(R.string.title_activity_map);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
drawer = findViewById(R.id.drawer_map);
toggle = new ActionBarDrawerToggle(this, drawer, R.string.Open, R.string.Close);
toggle.setDrawerIndicatorEnabled(true);
toggle.syncState();
drawer.addDrawerListener(toggle);
bottomNavBar();
lateralMenu();
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
StringRequest stringRequest = new StringRequest(Request.Method.GET, JSON_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
JSONArray listArray = obj.getJSONArray("factories");
for (int i = 0; i < listArray.length(); i++) {
JSONObject c = listArray.getJSONObject(i);
type = c.getString("TypeFactory");
id = c.getString("Id");
address = c.getString("Address");
name = c.getString("Name");
image_prod = c.getString("Logo");
float zoomLevel = 8.0f;
if(!c.getString("Longitude").isEmpty() && !c.getString("Latitude").isEmpty()) {
longitude = Double.valueOf(c.getString("Longitude"));
latitude = Double.valueOf(c.getString("Latitude"));
if (type.equals("winery")) {
LatLng winery = new LatLng(latitude, longitude);
Marker marker = mMap.addMarker(
new MarkerOptions()
.position(winery)
.title(id+"X"+name)
.snippet(address+"X"+URL+image_prod)
.icon(bitmapDescriptorFromVector(Map.this)));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(winery, zoomLevel));
markerSet.put(marker.getId(), false);
mMap.setInfoWindowAdapter(new CustomWindowInfoAdapter(Map.this, markerSet));
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
int iend = marker.getTitle().indexOf("X");
if(iend != -1) {
idMap = marker.getTitle().substring(0, iend);
WINERIES = "https://www.vagabondidelgusto.com/APP-MOBILE/API/api.php?type_api=factory&idFactory="+idMap;
}
RequestTickle mRequestTickle = VolleyTickle.newRequestTickle(getApplicationContext());
StringRequest stringRequest = new StringRequest(Request.Method.GET, WINERIES, null, null);
mRequestTickle.add(stringRequest);
NetworkResponse response = mRequestTickle.start();
if (response.statusCode == 200) {
String data = VolleyTickle.parseResponse(response);
Log.d("lebasi",data);
}
else{
}
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
解决方案
推荐阅读
- apache - 使用 .htaccess 阻止内容即使在允许的域中也无法加载
- cad - SolidWorks 使用光栅图形保存 PDF
- python - AttributeError: 'str' object has no attribute 'rint' - 如何替换或忽略数字列中的文本
- python - Django 令牌:下载带有令牌认证的服务器文件
- javascript - 执行 AJAX 请求的问题
- javascript - Javascript:替换字符串中的特定单词
- php - 使用 Laravel 搜索 or_where()
- astropy - 我正在尝试使用 astropy hdu.writeto 永久更改适合标题已将“无”添加到我的适合文件中
- go - web.Request 结构的字段状态未在 Golang 中正确克隆
- linux - ksh 函数返回 0 而不是 "?"