0
phpスクリプトからアンドロイドアプリケーションのjsonオブジェクトに問題があります。 Log.i(finalJson、 "json object")では、jsonの非同期タスクがリストから最初の要素だけを返すというlogcatがあります。私はPOSTMANに私のPHPをテストし、それが次のようになります。AsyncTaskは、JSONArrayの最初のJSONObjectのみを返します。
[
{
"ID": "1",
"Description": "Plisani meda",
"Price": "1000",
"Image": "http://www.volimsvojdom.rs/wf-proizvodiPics/47188/plisana-igracka-mis-u-pantalonama-LB80322.jpg"
},
{
"ID": "2",
"Description": "poni",
"Price": "2000",
"Image": "http://www.volimsvojdom.rs/wf-proizvodiPics/47188/plisana-igracka-mis-u-pantalonama-LB80322.jpg"
}
]
public class JSONTask extends AsyncTask<String,String,List<Prozivod>>
{
@Override
protected List<Prozivod> doInBackground(String... params) {
HttpURLConnection connection=null;
BufferedReader reader=null;
try {
URL url=new URL(params[0]);
connection=(HttpURLConnection)url.openConnection();
connection.connect();
InputStream stream=connection.getInputStream();
reader=new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer=new StringBuffer();
String line="";
while((line=reader.readLine())!=null)
{
buffer.append(line);
}
String finalJson=buffer.toString();
JSONArray jsonArray=new JSONArray(finalJson);
Log.i(finalJson,"json object");
List<Products> listOfItems=new ArrayList<>();
for(int i=0;i<jsonArray.length();i++)
{
JSONObject itemJson=jsonArray.getJSONObject(i);
Products p=new Products();
p.setProizvodID(proizvodJson.getInt("ID"));
p.setCena(proizvodJson.getInt("Price"));
p.setOpis(proizvodJson.getString("Description"));
p.setSlika(proizvodJson.getString("Image"));
listOfItems.add(p);
return listOfItems;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
catch (JSONException e) {
e.printStackTrace();
}finally {
if(connection!=null){connection.disconnect();}
}
try{if(reader!=null){reader.close();}}
catch (IOException e) {
e.printStackTrace();
}
return null ;
}
感謝の任意の助けを!
あなたは 'for'ループの内側から戻ります。それが、1回の繰り返しの後に終了する理由です。 forループの後にリストを返すことをお勧めします。 – Apoorv
return listOfItems;この行をforループの外側に移動してください。 –
提案:AsyncTaskの代わりにRetrofitを使用してください –