android - 解析JSON数据并将其放入gridview中

标签 android json android-arrayadapter android-gridview

我正在开发一个应用程序,我必须在其中解析 JSON 数据,并将它们放入自定义 gridview 中。它应该是这样的。

How to display the gridview?

到目前为止,我已经在 asynctask 中解析了 JSON 数据并获取了这些值。这是我的代码:

private class getRedeemData extends AsyncTask<String, Void, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pdia = new ProgressDialog(AllPerksActivity.this);
        pdia.setMessage("Loading products. Please wait...");
        pdia.show();
    }

    @Override
    protected String doInBackground(String... args) {
        HttpParams params = new BasicHttpParams();
        params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,
                HttpVersion.HTTP_1_1);
        HttpClient httpClient = new DefaultHttpClient(params);
        HttpPost post = new HttpPost(
                "MY API HERE..!!");

        post.setHeader("Content-Type", "application/x-www-form-urlencoded");

        try {
            post.setEntity(new StringEntity("client_id=" + client_id + "&"
                    + "client_secret=" + clientSecretKey, HTTP.UTF_8));

            HttpResponse response = httpClient.execute(post);
            int i = response.getStatusLine().getStatusCode();
            System.out.println("HTTP Post status AllPerk Redeemption API: "
                    + i);

            BufferedReader in = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent()));

            // SB to make a string out of the inputstream
            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) {
                sb.append(line + NL);
            }
            in.close();

            // the json string is stored here
            String result = sb.toString();
            System.out.println("Result Body: " + result);
            return result;

        } catch (Exception e) {
            // TODO: handle exception
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        JSONObject jObject;
        try {
            jObject = new JSONObject(result);

            JSONArray jSearchData = jObject.getJSONArray("rewards");

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

                JSONObject objJson = jSearchData.getJSONObject(i);

                String rewardID = objJson.getString("rewardID");
                String rewardType = objJson.getString("rewardType");
                String rewardTitle = objJson.getString("rewardTitle");

                System.out.println("Reward ID: " + rewardID);
                System.out.println("Reward Type: " + rewardType);
                System.out.println("Reward Tittle: " + rewardTitle);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        pdia.dismiss();
    }
}

这是我的 Gridview XML:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:horizontalSpacing="10dp"
android:numColumns="2"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical"
android:verticalScrollbarPosition="right"
android:verticalSpacing="10dp" >
</GridView>

有人可以告诉我如何使用适配器来解决这个问题吗?

任何形式的帮助将不胜感激。

最佳答案

将 JSON 数据保存在某个数组中,然后

gridView.setAdapter(new ImageAdapter(this, MOBILE_OS));

请参阅此链接了解带有自定义适配器的 Gridview

http://www.mkyong.com/android/android-gridview-example/

关于android - 解析JSON数据并将其放入gridview中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15635473/

相关文章:

android - 我们如何打开TextView的链接到Webview

jquery - 无法在客户端 html 上打印 json 响应

java - 将 ArrayList 转换为 JSON 文件

android - 带有对象 ArrayAdapter 的自定义微调器无法获取资源

android - 抽屉导航选择的项目 textColor by Custom Adapter

android - 如何禁用 Android Lollipop 波纹的 alpha 值?

android - 通过 Renderscript 在 GPU 中分配内存

json - Node.js和AWS凭证错误

java - adapter.getItem() 将返回什么?

java - 如何分包自定义arraylist?