très nouveau pour Android et reprise de volée (double problème :))Android ListView et Volley
Après avoir essayé la listview avec un tableau de chaînes (cela a fonctionné et j'ai pu voir le résultat) et volée pour récupérer d'un de ces api de test en ligne (cela a fonctionné et je vois le résultat)
Quand j'ai essayé de combiner les deux (la réponse de volée, l'analyser et le passer à l'adaptateur) et rien ne montre. Est-ce que quelqu'un pourrait me diriger vers un solide tutoriel combinant volley et listview ou aider à me montrer comment obtenir l'adaptateur pour afficher la réponse correctement dans la liste.
J'espère que quelqu'un là-bas avec le temps pour aider.
Mon Mainactivity.java
package com.example.web.listviewexample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
//Array of strings...
String[] mobileArray = {"Android", "Iphone", "Windows", "WebOs", "BlackBerry", "Max OS x"};
TextView results;
String JsonURL ="https://reqres.in/api/users/2";
String data="";
//define the volley request queue. It handles requests
RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//get the listview that will communicate with the adapter
ListView listexample = (ListView) findViewById(R.id.mobile_list);
//prepare the adapter
final ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
//attach the adapter
listexample.setAdapter(adapter);
//Volley stuff --cricket_007 Stackoverflow.com answer
final JsonObjectRequest obj= new JsonObjectRequest(Request.Method.GET, JsonURL, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
// parse the response
response = response.getJSONObject("data");
// add things to the adapter
adapter.add(response.toString());
}
catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){error.printStackTrace();
}
});
Volley.newRequestQueue(this).add(obj);
}
}
Activity_Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
>
<ListView
android:id="@+id/mobile_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout
activity_listview.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="25sp"
android:padding="10dp"
android:textStyle="bold">
</TextView>
Votre JsonUrl n'est pas valide. Il a un point-virgule –
Et vous avez deux 'Volley.newRequestQueue (this)', où un seul est nécessaire –
@Marco dans votre code vous créez l'adaptateur sous la demande Volley. La requête de Volley est Asynchrone par défaut donc vous voulez créer l'Adaptateur ou assigner la valeur dans 'onResponse'. – Enzokie