我又被困住了。我在stackoverflow上阅读了大量的答案,这些答案触及了我想要实现的目标,但我一直无法解决我的问题。
我在 ListViews 上学习了本教程,并得到了它的工作。但是,在我的应用程序中,我希望列表视图中的每一行都有一个不可见的参数来存储一个 JSON 对象,当单击一行时,我可以将其传递给我想要推送的下一个视图。我的代码现在看起来像这样(在尝试将 JSON 发送到列表中但徒劳无功之后)
private class StableArrayAdapter extends ArrayAdapter<String> {
HashMap<List, Integer> mIdMap = new HashMap<List, Integer>();
public StableArrayAdapter(Context context, int textViewResourceId,
List<String> objects, JSONObject jsonToAdd) {
super(context, textViewResourceId, objects);
/* for (int i = 0; i < objects.size(); ++i) {
mIdMap.put(objects.get(i), i);
} */
JSONArray keyNames = null;
keyNames = jsonToAdd.names();
for (int i = 0; i < objects.size(); ++i) {
JSONObject tempJSON =null;
HashMap<String, String> tempHashMap = new HashMap<String, String>();
List<String> tempList = new ArrayList<String>();
try{
tempJSON = jsonToAdd.getJSONObject(keyNames.get(i).toString());
} catch (JSONException e){
System.out.println("error");
}
tempHashMap.put(objects.get(i),tempJSON.toString());
tempList.add(0, objects.get(i));
tempList.add(1,tempJSON.toString());
mIdMap.put(tempList, i);
}
}
@Override
public long getItemId(int position) {
List<String> itemList = new ArrayList<String>();
String item = getItem(position);
return position;//mIdMap.get(item);
}
@Override
public boolean hasStableIds() {
return true;
}
这就是我所说的
final StableArrayAdapter adapter = new StableArrayAdapter(this,
android.R.layout.simple_list_item_1, listViewSource,forms);
listview.setAdapter(adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
JSONObject forms = null;
JSONObject jsonToPass = null;
try {
List<String> stuff = (List)parent.getItemAtPosition(position);
forms = new JSONObject(stuff.get(1));
jsonToPass = forms.getJSONObject(keyNames.get(position).toString());
} catch (JSONException e) {
e.printStackTrace();
}
Intent anotherActivityIntent = new Intent(ShowListActivity.this, CollectionPointListActivity.class);
anotherActivityIntent.putExtra("object",jsonToPass.toString());
startActivity(anotherActivityIntent);
}
});
显然这不是这样做的方法,我怎样才能从我的主类传递一个数据对象,以便我可以在“onItemClick()”中访问它?实现我想要做的最好的方法是什么?
问候,
丹尼尔