【问题标题】:display json data in recyclerview with cardview使用cardview在recyclerview中显示json数据
【发布时间】:2019-05-31 14:08:42
【问题描述】:

我正在尝试使用 recyclerview 和 cardview 在列表视图上显示我的 json 文件中的数据。 当我启动我的应用程序时,它只显示一个空白屏幕。我不确定我做错了什么,因为 android studio 上没有错误。

能否请您仔细检查我的代码并帮助我修复我的错误。我尝试在论坛和 youtube 上搜索解决方案,但没有成功。

下面是我的 json 文件和 mainactivity.java。

我的 json 文件

{
"movie": [
{
"title": "movie1",
"genre": "action",
"imgURL": "https://demonuts.com/Demonuts/SampleImages/roger.jpg"
},
{
"title": "movie2",
"genre": "romance",
"imgURL": "https://demonuts.com/Demonuts/SampleImages/murray.jpg"
},
{
"title": "movie3",
"genre": "drama",
"imgURL": "https://demonuts.com/Demonuts/SampleImages/djoko.jpg"
},
{
"title": "movie4",
"genre": "comedie",
"imgURL": "https://demonuts.com/Demonuts/SampleImages/nadal.jpg"
}
]
}

mainactivity.java

public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private ExampleAdapter mExampleAdapter;
private ArrayList<ExampleItem> mExampleList;
private RequestQueue mRequestQueue;

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

    mRecyclerView = findViewById(R.id.recycler_view);
    mRecyclerView.setHasFixedSize(true);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

    mExampleList = new ArrayList<>();

    mRequestQueue = Volley.newRequestQueue(this);
    parseJSON();
}

private void parseJSON() {
    String url = "https://api.jsonbin.io/b/5c2fc20381fe89272a845c69/1";

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONArray jsonArray = response.getJSONArray("movie");

                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject movie = jsonArray.getJSONObject(i);

                            String title = movie.getString("title");
                            String imageUrl = movie.getString("imageURL");
                            String genre = movie.getString("genre");

                            mExampleList.add(new ExampleItem(imageUrl, title, genre));
                        }

                        mExampleAdapter = new ExampleAdapter(MainActivity.this, mExampleList);
                        mRecyclerView.setAdapter(mExampleAdapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });

    mRequestQueue.add(request);
}
}

【问题讨论】:

    标签: json android-studio android-recyclerview


    【解决方案1】:

    改变movie.getString("imageURL");到movie.getString("imgURL")

                                for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject movie = jsonArray.getJSONObject(i);
                                String title = movie.getString("title");
                                String imageUrl = movie.getString("imgURL");
                                String genre = movie.getString("genre");
    
                                mExampleList.add(new ExampleItem(imageUrl, title, genre));
                            }
    

    【讨论】:

    • 您的 json 字符串值为 imgURL,但您将其获取为 movie.getString("imageURL");
    • 如果您仍然没有得到它,请替换我的答案中的代码而不是您的 for 循环部分。
    • 那么可能还有其他问题。日志中有错误吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多