Проанализируйте данные JSON и поместите их в gridview
Я разрабатываю приложение, в котором мне нужно разобрать данные JSON
и поместить их в пользовательский gridview
. Вот как это должно выглядеть.
До сих пор я анализировал свои данные JSON в asynctask и получал эти значения. Вот мой код:
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();
}
}
Вот мой XML для 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>
Может ли кто-нибудь сказать мне, как использовать адаптер для этой проблемы.
Любая помощь будет оценена по достоинству.3 ответа:
Вы сохраняете данные JSON в некотором массиве, а затем
gridView.setAdapter(new ImageAdapter(this, MOBILE_OS));
Обратитесь к этой ссылке для Gridview с пользовательским адаптером
Используя
import org.json.JSONArray; import org.json.JSONObject;
Может сделать легко. Проверьте ссылку Android gridview, используя данные json