sehr neu für Android und Volley (double trouble :))Android Listview und Volley
die Listenansicht mit einer Reihe von Strings Nach dem Versuch (es funktionierte, und ich konnte das Ergebnis sehen) und Volley von einem zum Abrufen von diesen online test api (es hat funktioniert und ich sehe das Ergebnis)
Wenn ich versuchte, die beiden zu kombinieren (die Antwort von Volley, parse es und übergeben Sie es an den Adapter) und nichts zeigt. Würde mich jemand auf ein solides Tutorium hinweisen, das Volley und Listview kombiniert oder mir hilft, mir zu zeigen, wie man den Adapter dazu bringt, die Antwort korrekt in der Listenansicht anzuzeigen.
Hoffe jemand da draußen mit der Zeit zu helfen.
Mein 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>
Ihre JsonUrl ist nicht gültig. Es hat ein Semikolon –
Und Sie haben zwei 'Volley.newRequestQueue (this)', wo nur eine benötigt wird –
@Marco in Ihrem Code erstellen Sie den Adapter unterhalb der Volley Anfrage. Die Volley-Anforderung ist standardmäßig asynchron, deshalb möchten Sie den Adapter erstellen oder den Wert in 'onResponse' zuweisen. – Enzokie