Java 填充RecyclerView列表
我似乎无法让我的Java 填充RecyclerView列表,java,android,android-recyclerview,android-adapter,Java,Android,Android Recyclerview,Android Adapter,我似乎无法让我的RecyclerView一路填充。它只生成第一个单元格,其他单元格为空。尽管for循环似乎运行了多次 JsonObjectRequest root = new JsonObjectRequest(Request.Method.GET, URL, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject respo
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);
}
JsonObjectRequest root=newjsonobjectrequest(Request.Method.GET,URL,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONObject提要=response.getJSONObject(“提要”);
JSONArray results=feed.getJSONArray(“结果”);
//Log.d(“FEED”,String.valueOf(FEED));w
对于(int i=0;i告诉我这是否有效:
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); }
JsonObjectRequest root=newjsonobjectrequest(Request.Method.GET,URL,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONObject提要=response.getJSONObject(“提要”);
JSONArray results=feed.getJSONArray(“结果”);
//Log.d(“FEED”,String.valueOf(FEED));w
对于(int i=0;i,每次使用一个值初始化适配器。这就是为什么列表包含一个值,而其他值为空。您需要将getRecyclerView();
移动到循环外部
像这样:
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();
// No need to notify the data set changed
// adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
试试看{
JSONObject提要=response.getJSONObject(“提要”);
JSONArray results=feed.getJSONArray(“结果”);
//Log.d(“FEED”,String.valueOf(FEED));w
对于(inti=0;i使用此选项可能会对您有所帮助
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,
LinearLayoutManager.VERTICAL, false));
recyclerView.setHasFixedSize(true);
}
将getRecyclerView();
置于循环之外,即在adapter之前。notifyDataSetChanged();
adapter。notifyDataSetChanged();不需要。只需将getRecyclerView()置于循环之外,但答案是:)@jason18401请点击我答案旁边的绿色勾号图标接受我的答案,结束这个问题。如果你也能给我一个投票,那就太好了。