【发布时间】:2011-07-27 18:46:49
【问题描述】:
我希望发生以下情况(一个简单的想法):我在主活动中单击添加按钮,输入一些信息(进入 EditText 框),然后返回主屏幕。在这里,我想显示一个列表,只有两个标题(不是所有信息)。当我单击该列表项目时,我想显示该项目的相应保存信息。因此,每个项目的信息都会有所不同。
当我这样做时,我从主屏幕使用 startActivityForResult() 然后返回。这对一个项目非常有效。当我添加另一个项目时,问题就出现了。无论我点击哪个项目,显示的信息都是一样的。简而言之,我需要找到一种方法来保存每个项目独有的信息。
截至目前,我有以下代码 sn-p :
//After I add all the information in the second intent
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == 1) {
//these display in the list (Each list item has two textfields,row1 and row 2)
row1 = data.getStringExtra("com.painLogger.row1");
row2 = data.getStringExtra("com.painLogger.row2");
//below is the other info entered
painLevelString = data.getStringExtra("com.painLogger.painLevel");
painLocation = data.getStringExtra("painLocation");
timeOfPainString = data.getStringExtra("com.painLogger.painTime");
textTreatmentString = data
.getStringExtra("com.painLogger.treatment");
addItem();
}
}
//When I click the item-- this is the info that is not unique...
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Intent intent = new Intent(this, Item1.class);
intent.putExtra("com.painLogger.painLevel", painLevelString);
intent.putExtra("com.painLogger.painTime" , timeOfPainString);
intent.putExtra("com.painLogger.treatment", textTreatmentString);
intent.putExtra("painLocation", painLocation);
startActivity(intent);
}
// 编辑:添加项目代码
private void addItem() {
HashMap<String, String> map = new HashMap<String, String>();
map.put("row_1", row1);
map.put("row_2", row2);
painItems.add(map);
adapter.notifyDataSetChanged();
}
//*编辑:一些定义 *
SimpleAdapter adapter;
List<HashMap<String, String>> painItems = new ArrayList<HashMap<String, String>>();
我可以理解为什么会发生这种情况——每次我单击一个项目时,意图是放置最后一个额外的,这意味着添加了最后一个对象的信息。如何使每个 OnItemClick 独一无二?我怀疑我将不得不使用位置变量。
【问题讨论】:
-
你要保存到哪里?
-
每个项目的信息保存在哪里?
-
不幸的是,我认为这是问题所在。我只保存数组列表,如我之前的问题所示(目前正在工作):stackoverflow.com/questions/6839965/…。那么我将如何保存每个项目的信息呢?
标签: java android android-intent onitemclicklistener