Java 使用凌空截击从JSON中获取列表,仅生成最后一个对象的列表
我正在尝试获取JSON格式的数据。但是,在获取时创建的列表仅针对每个列表项具有最后一个对象的详细信息。请引导 以下是Mainactivity获取数据的代码Java 使用凌空截击从JSON中获取列表,仅生成最后一个对象的列表,java,android,android-volley,Java,Android,Android Volley,我正在尝试获取JSON格式的数据。但是,在获取时创建的列表仅针对每个列表项具有最后一个对象的详细信息。请引导 以下是Mainactivity获取数据的代码 package com.example.ankurdell.customlistview; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.jso
package com.example.ankurdell.customlistview;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.Menu;
import android.widget.ListView;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
public class MainActivity extends Activity {
// Log tag
private static final String TAG = MainActivity.class.getSimpleName();
// Movies json url
private static final String url = "https://api.dailymotion.com/videos";
private ProgressDialog pDialog;
private ArrayList<DailyMovie> movieList = new ArrayList<>();
private ListView listView;
private CustomListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list);
adapter = new CustomListAdapter(this, movieList);
listView.setAdapter(adapter);
pDialog = new ProgressDialog(this);
// Showing progress dialog before making http request
pDialog.setMessage("Loading...");
pDialog.show();
// Creating volley request obj
JsonObjectRequest movieReq = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
hidePDialog();
// Parsing json
try {
JSONArray jsonArray = response.getJSONArray("list");
DailyMovie movie = new DailyMovie();
for (int a = 0; a < jsonArray.length(); a++) {
JSONObject obj = jsonArray.getJSONObject(a);
System.out.println("Object Value " + a + " " + obj.toString());
movie.setId(obj.getString("id"));
movie.setTitle(obj.getString("title"));
movie.setOwner(obj.getString("owner"));
movie.setChannel(obj.getString("channel"));
// adding movie to movies array
movieList.add(movie);
}
} catch (JSONException e) {
e.printStackTrace();
}
// notifying list adapter about data changes
// so that it renders the list view with updated data
adapter.notifyDataSetChanged();
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("Error");
VolleyLog.d(TAG, "Error: " + error.getMessage());
hidePDialog();
}
});
// Adding request to request queue
app.AppController.getInstance().addToRequestQueue(movieReq);
}
@Override
public void onDestroy() {
super.onDestroy();
hidePDialog();
}
private void hidePDialog() {
if (pDialog != null) {
pDialog.dismiss();
pDialog = null;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
谁能告诉我哪里做错了。我指的是做编码。日常电影只是一个元素。对吧? 您必须在for语句中声明DailyMovie变量
for (int a = 0; a < jsonArray.length(); a++) {
JSONObject obj = jsonArray.getJSONObject(a);
System.out.println("Object Value " + a + " " + obj.toString());
DailyMovie movie = new DailyMovie();
movie.setId(obj.getString("id"));
movie.setTitle(obj.getString("title"));
movie.setOwner(obj.getString("owner"));
movie.setChannel(obj.getString("channel"));
// adding movie to movies array
movieList.add(movie);
}
for(int a=0;a
System.out.println(“对象值”+a+“”+obj.toString());什么是值?为evry对象完美地获取所有值。对象值0{“id”:“x5xhdeg”,“title”:“T”下面的参考ừ乌托邦ọt sóng_tậ第26页,“频道”:“短片”,“所有者”:“x1yzduc”}08-20 18:59:00.873 26946-26946/com.example.ankurdell.customlistview I/System.out:combine x5xhdegTừ乌托邦ọt sóng_tập 26 08-20 18:59:00.873 26946-26946/com.example.ankurdell.customlistview I/System.out:Object Value 1{“id”:“x5xhg83”,“title”:“BéBébienvenuevalerie”,“channel”:“tv”,“owner”:“x1pntaq”}您是在寻找JsonArray中的最后一个JsonObject,还是JsonObject中的最后一个Object?DailyMovie只是一个元素。对吗?@Tony当我点击url时,我得到了列表数组,它有4个带有键值的对象。我正在获取每个键的值,并将它们放在自定义列表视图中。但我得到的列表只有最后一个对象的值10次
for (int a = 0; a < jsonArray.length(); a++) {
JSONObject obj = jsonArray.getJSONObject(a);
System.out.println("Object Value " + a + " " + obj.toString());
DailyMovie movie = new DailyMovie();
movie.setId(obj.getString("id"));
movie.setTitle(obj.getString("title"));
movie.setOwner(obj.getString("owner"));
movie.setChannel(obj.getString("channel"));
// adding movie to movies array
movieList.add(movie);
}