填充 RecyclerView 列表

我似乎无法让我RecyclerView一直填充。它只制作第一个单元格,其他单元格为空白。尽管 for 循环似乎运行了多次。


    JsonObjectRequest root = new JsonObjectRequest(Request.Method.GET, URL, null, new Response.Listener<JSONObject>() {

        @Override

        public void onResponse(JSONObject response) {

            try {

                JSONObject feed = response.getJSONObject("feed");

                JSONArray results = feed.getJSONArray("results");

                //Log.d("FEED", String.valueOf(feed));w

                for(int i = 0; i<results.length(); i++){

                    JSONObject resultsObj = results.getJSONObject(i);


                    Log.d(TAG, "inside" + String.valueOf(i));

                    mImageUrls.add(resultsObj.getString("artworkUrl100"));

                    mTitle.add(resultsObj.getString("name"));

                    getRecyclerView();

                }


                adapter.notifyDataSetChanged();


            } catch (JSONException e) {

                e.printStackTrace();

            }


        }

    }, new Response.ErrorListener() {

        @Override

        public void onErrorResponse(VolleyError error) {


        }

    });

    mRequestQueue.add(root);


}


private void getRecyclerView(){

    Log.d(TAG, "getRecyclerView");

    recyclerView = findViewById(R.id.recyclerView);

    adapter = new RecyclerViewAdapter(mImageUrls, mTitle, this);

    recyclerView.setAdapter(adapter);

    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    recyclerView.setHasFixedSize(true);

}



www说
浏览 131回答 3
3回答

斯蒂芬大帝

使用这个可能对你有帮助。private void getRecyclerView(){&nbsp; &nbsp; Log.d(TAG, "getRecyclerView");&nbsp; &nbsp; recyclerView = findViewById(R.id.recyclerView);&nbsp; &nbsp; adapter = new RecyclerViewAdapter(mImageUrls, mTitle, this);&nbsp; &nbsp; recyclerView.setAdapter(adapter);&nbsp; &nbsp; recyclerView.setLayoutManager(new LinearLayoutManager(this,&nbsp;&nbsp; &nbsp; LinearLayoutManager.VERTICAL, false));&nbsp; &nbsp; recyclerView.setHasFixedSize(true);}

慕标琳琳

告诉我这是否有效:JsonObjectRequest root = new JsonObjectRequest(Request.Method.GET, URL, null, new Response.Listener<JSONObject>() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onResponse(JSONObject response) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject feed = response.getJSONObject("feed");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONArray results = feed.getJSONArray("results");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Log.d("FEED", String.valueOf(feed));w&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i = 0; i<results.length(); i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject resultsObj = results.getJSONObject(i);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.d(TAG, "inside" + String.valueOf(i));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mImageUrls.add(resultsObj.getString("artworkUrl100"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mTitle.add(resultsObj.getString("name"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getRecyclerView();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; adapter.notifyDataSetChanged();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (JSONException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }, new Response.ErrorListener() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onErrorResponse(VolleyError error) {&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });&nbsp; &nbsp; mRequestQueue.add(root);}private void getRecyclerView(){&nbsp; &nbsp; Log.d(TAG, "getRecyclerView");&nbsp; &nbsp; recyclerView = findViewById(R.id.recyclerView);&nbsp; &nbsp; adapter = new RecyclerViewAdapter(mImageUrls, mTitle, this);&nbsp; &nbsp; recyclerView.setAdapter(adapter);&nbsp; &nbsp; recyclerView.setLayoutManager(new LinearLayoutManager(this));&nbsp; &nbsp; recyclerView.setHasFixedSize(true); }我所做的是移出getRecyclerView();循环,因为您只需要调用一次,而不是每次要设置 recyclerview 时。

千万里不及你

每次使用一个值初始化适配器时。这就是列表包含一个值而其他值是空白的原因。您需要移至getRecyclerView();循环外。看起来像这样:try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject feed = response.getJSONObject("feed");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONArray results = feed.getJSONArray("results");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Log.d("FEED", String.valueOf(feed));w&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i = 0; i<results.length(); i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject resultsObj = results.getJSONObject(i);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.d(TAG, "inside" + String.valueOf(i));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mImageUrls.add(resultsObj.getString("artworkUrl100"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mTitle.add(resultsObj.getString("name"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;getRecyclerView();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// No need to notify the data set changed&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// adapter.notifyDataSetChanged();&nbsp; &nbsp; &nbsp; &nbsp; } catch (JSONException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java