jsonArray 请求没有响应

Sac*_*dav -43 java android json

我正在尝试从 Android 获取数据到自定义 ListView,但无法获取!请帮忙

我的 JSON:_

{  
   "College":[  
      {  
         "Name":"NITK",
         "Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\nitk.jpg"
      },
      {  
         "Name":"IITR",
         "Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\iitr.jpg"
      },
      {  
         "Name":"NITT",
         "Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\nitt.jpg"
      },
      {  
         "Name":"IITB",
         "Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\iitb.png"
      },
      {  
         "Name":"IITG",
         "Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\iitg.png"
      },
      {  
         "Name":"IITD",
         "Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\iitd.png"
      },
      {  
         "Name":"BITS",
         "Logo":"http:\/\/192.168.43.164\\Webapp\\Collegelogos\\bits.png"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

代码:-

public class MainActivity extends AppCompatActivity {
    private List<College> listcollege;

    //Creating Views
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private RecyclerView.Adapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Initializing Views
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);

        listcollege = new ArrayList<>();
        getData();

    }

    private void getData(){
        //Showing a progress dialog
        final ProgressDialog loading = ProgressDialog.show(this,"Loading Data", "Please wait...",false,false);

        //Creating a json array request
        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config.DATA_URL,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        //Dismissing progress dialog
                        Toast.makeText(MainActivity.this, "sachin", Toast.LENGTH_SHORT).show();
                        loading.dismiss();

                        //calling method to parse json array
                        parseData(response);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                });

        //Creating request queue
        RequestQueue requestQueue = Volley.newRequestQueue(this);

        //Adding request to the queue
        requestQueue.add(jsonArrayRequest);
    }
    public  void parseData(JSONArray array) {
        for (int i = 0; i < array.length(); i++) {
            College college = new College();
            JSONObject json = null;
            try {
                json = array.getJSONObject(i);
                college.setImageUrl(json.getString(Config.TAG_IMAGE_URL));
               String s = (json.getString(Config.TAG_NAME));
                Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
                college.setName(s);

            } catch (JSONException e) {
                e.printStackTrace();
            }
            listcollege.add(college);

        }
            adapter = new CardAdapter(this, listcollege);
            recyclerView.setAdapter(adapter);
      //  adapter.notifyDataSetChanged();

    }


}
Run Code Online (Sandbox Code Playgroud)

日志:- Android 监视器

07-04 13:02:42.289 16225-16256/com.example.sachin.volleyrecycle I/OpenGLRenderer: Initialized EGL, version 1.4
07-04 13:02:42.289 16225-16256/com.example.sachin.volleyrecycle D/OpenGLRenderer: Swap behavior 1
07-04 13:02:42.289 16225-16256/com.example.sachin.volleyrecycle W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
07-04 13:02:42.289 16225-16256/com.example.sachin.volleyrecycle D/OpenGLRenderer: Swap behavior 0
07-04 13:02:42.702 16225-16225/com.example.sachin.volleyrecycle E/RecyclerView: No adapter attached; skipping layout
07-04 13:02:42.946 16225-16225/com.example.sachin.volleyrecycle W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
Run Code Online (Sandbox Code Playgroud)

Fer*_*med 5

1.初始化你的adapter并将其设置为RecyclerViewfromonCreate()方法。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Initializing Views
    recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    recyclerView.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);

    listcollege = new ArrayList<>();
    adapter = new CardAdapter(this, listcollege);
    recyclerView.setAdapter(adapter);

    getData();
}
Run Code Online (Sandbox Code Playgroud)

2.JsonArrayRequest尝试使用而不是JsonObjectRequest

//Creating a json object request
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest (Config.DATA_URL,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                //Dismissing progress dialog
                Toast.makeText(MainActivity.this, "sachin", Toast.LENGTH_SHORT).show();
                loading.dismiss();

                // College 
                JSONArray jsonArrayCollege = response.getJSONArray("College");

                // calling method to parse json array
                parseData(jsonArrayCollege);
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

//Creating request queue
RequestQueue requestQueue = Volley.newRequestQueue(this);

//Adding request to the queue
requestQueue.add(jsonObjectRequest);
Run Code Online (Sandbox Code Playgroud)

3.更新parseData()方法如下:

public  void parseData(JSONArray array) {
    for (int i = 0; i < array.length(); i++) {
        College college = new College();
        JSONObject json = null;
        try {
            json = array.getJSONObject(i);
            college.setImageUrl(json.getString(Config.TAG_IMAGE_URL));
           String s = (json.getString(Config.TAG_NAME));
            Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
            college.setName(s);

        } catch (JSONException e) {
            e.printStackTrace();
        }
        listcollege.add(college);
    }  
    adapter.notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助~