Java JSONArray到Listview我做错了什么?
大家好,我现在已经搜索了一段时间的错误或如何纠正错误,是的,这里的很多问题帮助我更进一步 但是我得到了一个API,其中有一个JSONArray,我想在listview中显示这些数据。到目前为止,我在我的日志中得到了我的数据,现在我只是尝试从每个对象开始显示名称(然后我可以稍后添加其余的数据),但我不确定我是否在正确的位置,也许有人可以在这里帮助我,并显示我做错了什么 非常感谢 列表视图名称:AllBirdsJava JSONArray到Listview我做错了什么?,java,android,json,listview,Java,Android,Json,Listview,大家好,我现在已经搜索了一段时间的错误或如何纠正错误,是的,这里的很多问题帮助我更进一步 但是我得到了一个API,其中有一个JSONArray,我想在listview中显示这些数据。到目前为止,我在我的日志中得到了我的数据,现在我只是尝试从每个对象开始显示名称(然后我可以稍后添加其余的数据),但我不确定我是否在正确的位置,也许有人可以在这里帮助我,并显示我做错了什么 非常感谢 列表视图名称:AllBirds @Override protected void onCreate(Bundle
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_observation);
mAuth = FirebaseAuth.getInstance();
String URL="myAPI";
RequestQueue requestQueue= Volley.newRequestQueue(this);
JsonArrayRequest objectRequest = new JsonArrayRequest (Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Rest Response",response.toString());
try{
for(int i=0; i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
Log.d("NameDanish", NameDanish);
}
}catch(JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Rest Response",error.toString());
}
});
requestQueue.add(objectRequest);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, NameDanish);
ListView list = (ListView) findViewById(R.id.AllBirds);
list.setAdapter(adapter);
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u all\u观察);
mAuth=FirebaseAuth.getInstance();
字符串URL=“myAPI”;
RequestQueue RequestQueue=Volley.newRequestQueue(this);
JsonArrayRequest objectRequest=新的JsonArrayRequest(Request.Method.GET,URL,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
Log.e(“Rest响应”,Response.toString());
试一试{
对于(int i=0;i在类中创建ArrayList
ArrayList ArrayList=新的ArrayList()
使用以下命令更改上述代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_observation);
mAuth = FirebaseAuth.getInstance();
String URL = "myAPI";
RequestQueue requestQueue = Volley.newRequestQueue(this);
JsonArrayRequest objectRequest = new JsonArrayRequest(Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Rest Response", response.toString());
try {
for (int i = 0; i < response.length(); i++) {
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
arrayList.add(NameDanish);
Log.d("NameDanish", NameDanish);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Rest Response", error.toString());
}
});
requestQueue.add(objectRequest);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, arrayList);
ListView list = (ListView) findViewById(R.id.AllBirds);
list.setAdapter(adapter);
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u all\u观察);
mAuth=FirebaseAuth.getInstance();
字符串URL=“myAPI”;
RequestQueue RequestQueue=Volley.newRequestQueue(this);
JsonArrayRequest objectRequest=新的JsonArrayRequest(Request.Method.GET,URL,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
Log.e(“Rest响应”,Response.toString());
试一试{
对于(int i=0;i
像这样全局创建字符串arraylist
ArrayList<String> name_array=new ArrayList<>();
ArrayList name_array=new ArrayList();
然后加上
try{
for(int i=0; i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
name_array.add(NameDanish);
Log.d("NameDanish", NameDanish);
}
试试看{
对于(int i=0;i创建listView、适配器、数组作为成员变量,并使用responseHandler中的notifyDataUpdate更新数据
ListView mList;
ArrayAdapter<String> mAdapter
ArrayList<String> mData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_observation);
mData=new ArrayList<>();
mList = (ListView) findViewById(R.id.AllBirds);
mAdapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, mData);
list.setAdapter(adapter);
mAuth = FirebaseAuth.getInstance();
String URL="myAPI";
RequestQueue requestQueue= Volley.newRequestQueue(this);
JsonArrayRequest objectRequest = new JsonArrayRequest (Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Rest Response",response.toString());
try{
for(int i=0; i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
mData.add(NameDanish);
Log.d("NameDanish", NameDanish);
}
mAdapter.notifyDataSetChanged();
}catch(JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Rest Response",error.toString());
}
});
requestQueue.add(objectRequest);
}
ListView-mList;
ArrayAdapter mAdapter
ArrayList mData;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u all\u观察);
mData=newarraylist();
mList=(ListView)findViewById(R.id.AllBirds);
mAdapter=新阵列适配器(this,R.layout.activity\u all\u observation,mData);
list.setAdapter(适配器);
mAuth=FirebaseAuth.getInstance();
字符串URL=“myAPI”;
RequestQueue RequestQueue=Volley.newRequestQueue(this);
JsonArrayRequest objectRequest=新的JsonArrayRequest(Request.Method.GET,URL,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
Log.e(“Rest响应”,Response.toString());
试一试{
对于(inti=0;i我现在已经将代码更改为这个,正如Toyj所说,我已经将我的xml发布到了
我没有得到任何数据,只是所有的名字都显示在日志中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_observation);
mAuth = FirebaseAuth.getInstance();
final ArrayList arrayList = new ArrayList<>()
String URL="MYAPI";
RequestQueue requestQueue= Volley.newRequestQueue(this);
JsonArrayRequest objectRequest = new JsonArrayRequest (Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Rest Response",response.toString());
try{
//JSONArray jsonArray = new JSONArray(response);
for(int i=0; i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String NameDanish = jresponse.getString("NameDanish");
arrayList.add(NameDanish);
Log.d("NameDanish", NameDanish);
}
}catch(JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Rest Response",error.toString());
}
});
requestQueue.add(objectRequest);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_all_observation, arrayList);
ListView list = (ListView) findViewById(R.id.AllBirds);
list.setAdapter(adapter);
}
XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="net.simplifiedlearning.firebaseauth.all_observationActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/AllBirds">
</ListView>
</LinearLayout>
什么是NameDanish
这里您可以将JSONArray响应粘贴到json响应之前您可以传递字符串值(NameDanish)在ArrayAdapter中。请在ArrayAdapter中传递字符串数组或Arraylist。我已在底部添加了所有代码作为问题。我尝试调试på代码,但在Arraylist中未获得任何结果,但我仍能在日志中看到所有名称。很抱歉,我的评论已发布较长时间,请查看:)
{
"BirdId": 1,
"Comment": null,
"Created": "/Date(1523836800000+0000)/",
"Id": 132,
"Latitude": 55.6886037,
"Longitude": 12.5310135,
"Placename": "K",
"Population": 0,
"UserId": "user1",
"NameDanish": "solsort",
"NameEnglish": "blackbird"
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="net.simplifiedlearning.firebaseauth.all_observationActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/AllBirds">
</ListView>
</LinearLayout>