2017-04-08 16 views
0

1から取得するために、文字列の配列(それが働いたと私は結果を見ることができた)とボレーでリストビューを試した後、アンドロイドとボレー(ダブルトラブル:))AndroidのListViewコントロールとバレーボール

に非常に新しいです(試してみて結果を見て)

私は2つを組み合わせると(バレーからの応答、解析してアダプタに渡す)、何も表示されません。誰かが、ボレーとリストビューを組み合わせた実践的なチュートリアルを指導してくれますか、またはアダプタにリストビューでの応答を正しく表示させる方法を教えてください。

誰かが助けてくれることを願っています。

マイ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> 

はこのエラーを取得 enter image description here

+1

あなたのJsonUrlは無効です。それはセミコロンを持っています –

+1

そしてあなたは2つの 'Volley.newRequestQueue(this)'を持っています。ただ1つが必要です。 –

+0

@Marcoあなたのコードでは、Volleyリクエストの下にアダプタを作成しています。ボレーリクエストはデフォルトでは非同期であるため、アダプタを作成したり、値をonResponseに割り当てる必要があります。 – Enzokie

答えて

1

アダプターをVolleyに組み込むにはどうすればよいですか?

まず、私はあなたがあなたのURLを修正する必要があると思うし、あなただけのArrayList

セカンドのようなアダプタに追加し、ArrayAdapterにあなたの2番目のパラメータは、android:id/text1のIDが含まれていレイアウトにする必要があります追加の引数を指定しない場合は、それは分かりませんが、ドキュメントに埋め込まれています。つまり、単一のTextViewのための組み込みのレイアウトがあります。

//Get the listview 
    ListView listView = (ListView) findViewById(R.id.mobile_list); 
    // make adapter and set it 
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 
    listView.setAdapter(adapter); 

    // Do Volley things 
    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()); 
+0

お時間をいただきありがとうございます。私はあなたのこの行に "cricket_007 thankfull" adapter.add(response.toString()) "...これはすべてのチュートリアルの欠けている部分です。それは長い8時間の読書と試練でした。私はupvote笑で戻ってきます。 – Marco

+0

もう一度あなたの助けが必要です。私はあなたのコードを追加しました(上のactivity_main.javaを更新しました)。エラーを取得しました。(上記のエラーの画面を添付しました...) – Marco

+0

警告に関係なく動作しますが、左側に 'ArrayAdapter 'を忘れました。 –

関連する問題