如何將解析的JSON數據中的按鈕ID從ID列表中輸入到列表視圖中?Android將按鈕ID從解析的JSON數據輸入到列表視圖中
目前我有這個方法:
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
MainActivity.this, contactList,
R.layout.list_item, new String[]{"name", "description",
"release_at", "details" }, new int[]{R.id.name,
R.id.description, R.id.release_at});
lv.setAdapter(adapter);
}
我想要的ID添加到創建的按鈕,像這樣:
<Button
android:id="@+id/gameDetails" // <- here I want to add my id
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
後來我想創建一個意圖,併發布按鈕ID到新的活動是這樣的:
public void openDetails(View view) {
String getContactId = new GetContacts().getButtonId();
Intent paralaxActivityItent = new Intent(MainActivity.this, ParalaxToolbarActivity.class);
paralaxActivityItent.putExtra("id", id); // the button id
MainActivity.this.startActivity(paralaxActivityItent);
}
在其他活動我想顯示數據相關我發佈的ID。
因爲即時通訊新的Android開發我不知道如果這是正確的。
編輯:
這是我的適配器:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private List<String> friends;
private Activity activity;
private ArrayList<HashMap<String, String>> contactList;
public RecyclerAdapter(Activity activity, List<String> friends) {
this.friends = friends;
this.activity = activity;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
//inflate your layout and pass it to view holder
LayoutInflater inflater = activity.getLayoutInflater();
View view = inflater.inflate(android.R.layout.simple_list_item_1, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerAdapter.ViewHolder viewHolder, int position) {
viewHolder.item.setText(friends.get(position));
}
@Override
public int getItemCount() {
return (null != friends ? friends.size() : 0);
}
/**
* View holder to display each RecylerView item
*/
protected class ViewHolder extends RecyclerView.ViewHolder {
private TextView item;
public ViewHolder(View view) {
super(view);
item = (TextView) view.findViewById(android.R.id.text1);
}
}
}
MyGetContact類:
/**
* Async task class to get json by making HTTP call
*/
private class GetContacts extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Please wait");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url);
Log.e(TAG, "Response from url: " + jsonStr);
if (jsonStr != null) {
try {
// Getting JSON Array node
JSONArray jsonArray = new JSONArray(jsonStr);
// looping through All Contacts
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject c = jsonArray.getJSONObject(i);
String id = c.getString("id");
String name = c.getString("name");
String description = c.getString("description");
String video_url = c.getString("video_url");
String platform = c.getString("platform");
String avaible = c.getString("avaible");
String release_at = c.getString("release_at");
// tmp hash map for single contact
HashMap<String, String> data = new HashMap<>();
// adding each child node to HashMap key => value
data.put("id", id);
data.put("name", name);
data.put("description", description);
data.put("video_url", video_url);
data.put("platform", platform);
data.put("release_at", release_at);
// adding contact to contact list
contactList.add(data);
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
} else {
Log.e(TAG, "Couldn't get json from server.");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Couldn't get json from server. Check LogCat for possible errors!",
Toast.LENGTH_LONG)
.show();
}
});
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
MainActivity.this, contactList,
R.layout.list_item, new String[]{"name", "description",
"release_at", "details" }, new int[]{R.id.name,
R.id.description, R.id.release_at});
lv.setAdapter(adapter);
}
您必須創建您自己的適配器類 –
我有一個適配器類,但我不知道如何繼續,我應該將它添加到我的問題嗎? – utdev
是的。看起來你有一個SimpleAdapter,但不是你自己的適配器類。同時顯示json數據。而'GetContacts'的類定義是因爲如果這是一個Activity,你不應該'new'它 –