I'm developing an application in which I have to parse JSON
data and have to put them in custom gridview
. Here is what it should look like.

So far I have parsed my JSON data in asynctask and getting those values. Here is my code:
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();
}
}
Here is my XML for Gridview:
<?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>
Can some one tell my how to use adapter for this problem.
Any kind of help will be appreciated.
You save the JSON data in some array and then
gridView.setAdapter(new ImageAdapter(this, MOBILE_OS));
Refer to this link for Gridview with custom adapter
After parsing the JSON data store the data in a collection (an ArrayList will do), create an adapter and bind it with your GridView using setAdapter
method of the grid view
Check the developer docs
Using
import org.json.JSONArray;
import org.json.JSONObject;
Can do easily. Check the reference Android gridview using json data
来源:https://stackoverflow.com/questions/15635473/parse-json-data-and-put-them-into-a-gridview