如何将解析的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'它 –