所以基本上我使用的是Google的Places API,我想要从JSON到我的回收器视图的特定数据。我试着用凌空抽射,但它给了我一个空白屏幕或不断崩溃。所以有人能帮助我如何获得数据并显示具体的数据吗…这是我尝试的代码
LoadPlacesActivity.java
public class LoadPlacesActivity extends AppCompatActivity {
ActivityLoadPlacesBinding binding;
private PlacesAdapter placesAdapter;
FirebaseAuth auth;
FirebaseDatabase database;
double lat, lon;
String url;
public static ArrayList<Places> placeList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
binding = ActivityLoadPlacesBinding.inflate(getLayoutInflater());
super.onCreate(savedInstanceState);
auth = FirebaseAuth.getInstance();
database = FirebaseDatabase.getInstance();
setContentView(binding.getRoot());
binding.loadPlaces.setLayoutManager(new LinearLayoutManager(this));
binding.loadPlaces.setHasFixedSize(true);
database.getReference("Users").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
lat = Double.parseDouble("" + snapshot.child(auth.getCurrentUser().getUid()).child("Latitude").getValue());
lon = Double.parseDouble("" + snapshot.child(auth.getCurrentUser().getUid()).child("Longitude").getValue());
url = ("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=" + lat + "," + lon + "&radius=10000&type=bank&key=" + R.string.google_api_key);
getPlacesData();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private void getPlacesData() {
RequestQueue requestQueue = Volley.newRequestQueue(this);
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
for (int i=0;i<response.length();i++){
try {
JSONObject obj=response.getJSONObject(i);
Places places=new Places();
places.setName(obj.getJSONObject("results").getString("name"));
placeList.add(places);
} catch (JSONException e) {
e.printStackTrace();
}
}
placesAdapter = new PlacesAdapter(LoadPlacesActivity.this, placeList);
binding.loadPlaces.setAdapter(placesAdapter);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
requestQueue.add(jsonArrayRequest);
}
public class PlacesAdapter extends RecyclerView.Adapter<PlacesAdapter.ViewHolder> {
ArrayList<Places> places;
Context con;
public PlacesAdapter(Context context,ArrayList<Places>places) {
super();
this.con = context;
this.places=places;
}
@NonNull
@Override
public PlacesAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemsView = LayoutInflater
.from(parent.getContext())
.inflate(R.layout.places_cards, parent, false);
return new ViewHolder(itemsView);
}
@Override
public void onBindViewHolder(@NonNull PlacesAdapter.ViewHolder holder, int position) {
Places model = places.get(position);
holder.name.setText(model.getName());
}
@Override
public int getItemCount() {
return places.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView pl_image;
TextView name;
public ViewHolder(@NonNull View itemView) {
super(itemView);
pl_image = itemView.findViewById(R.id.pl_image);
name = itemView.findViewById(R.id.names);
}
}
places.java
public class Places {
private String name;
private String category;
private String rating;
private String opennow;
private String vicinity;
private double latitude,longitude;
public Places()
{
this.name="";
this.category="";
this.rating="";
this.opennow="";
this.vicinity="";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getRating() {
return rating;
}
public void setRating(String rating) {
this.rating = rating;
}
public String getOpen() {
return opennow;
}
public void setOpenNow(String open) {
this.opennow = open;
}
public String getVicinity() {
return vicinity;
}
public void setVicinity(String vicinity) {
this.vicinity = vicinity;
}
public void setLatLng(double lat,double lon)
{
this.latitude=lat;
this.longitude=lon;
}
}这是logcat的截图
问题似乎出在您使用的URL上,我尝试了浏览器中的URL,得到的响应是:“error_message”:“提供的API密钥无效。”因此,我认为这就是您的代码转到onerrorResponse
块的原因。因此,没有调用setadapter
,您将面临未附加适配器的崩溃。检查代码中r.string.google_api_key
的值,它似乎是错误的。
我正在尝试从AndroidStudio中的JSON文件中读取数据,格式如下: 我想有对象包含int,String,String(每行的新对象)。有人知道怎么写吗?
问题内容: 我是Jquery,Ajax和JSON的新手。我在解析Json数据时遇到问题。我在Stackoverflow上遇到了很多问题 解析HTML表的JSON对象 访问/处理(嵌套的)对象,数组或JSON 在JavaScript中解析JSON? 如何在JQuery中解析此JSON对象? 还有很多… 我仍然无法解析Json数据。 我的Jquery看起来像: 我已经尝试了所有组合来解析此数据,但是j
本文向大家介绍JavaScript中解析JSON数据的三种方法,包括了JavaScript中解析JSON数据的三种方法的使用技巧和注意事项,需要的朋友参考一下 概述 现在JSON格式在web开发中越来越受重视,特别是在使用ajax开发项目的过程中,经常需要将json格式的字符串返回到前端,前端解析成JS对象(JSON )。 ECMA-262(E3)中没有将JSON概念写到标准中,还好在 ECMA-
问题内容: 我在Angular中显示JSON数据时遇到麻烦。我已成功将数据从后端发送到前端(角度),但无法显示它们。 我已经尝试在JSFiddle上模拟类似的情况,尽管我已经从后端准备了数据 获取/发送数据->后端: 获取数据->前端(角度) 带有ng-repeat指令的HTML部分: 谁知道是什么问题吗? 问题答案: 据我所知,您将对象存储为JSON,但从未对其进行解析。因此使用 代替 应该解决
问题内容: 我已经来了一段时间,感觉好像logstash中的JSON过滤器正在为我删除数据。我最初是从https://www.digitalocean.com/community/tutorials/how- to-install-elasticsearch-logstash-and-kibana-elk-stack-on- ubuntu-14-04 跟随该教程的 我进行了一些更改,但基本相同。我
我从服务器获得一个Json对象,该Json对象包含两个Json数组。我知道如何将数据放入json数组中的recyclerview。但我不知道如何将两个json数组数据放入recyclerview。其中一个Json数组包含rep、name和name1。这里的name表示name1的id(codeID)。下一个数组包含customer(codeID)和coll(name和customer相同)。我使用