如果我有2个微调器依赖类型ArrayList>
spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
ArrayList<HashMap<String, String>> arrList = new ArrayList<HashMap<String,String>>();
for (HashMap<String, String> map2 : arrList) {
String value = map2.get("SectionID");
// Do something
Context context = getApplicationContext();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, value, duration);
toast.show();
Log.d("wwwwwwwwwwwwwwwwwwww: ", value);
// Do something
}
}
@Override
public void onNothingSelected(AdapterView<?> adapter) {
}
});
我喜欢这样但是kothing发生了并且logcat没有错误
答案 0 :(得分:0)
在用户点击微调器中的项目后,我不知道如何在此数组中获取带有标记(courseid)的项目。
如果您只想从每一行获取courseid
,则不需要自定义OnItemSelectedListener。简单使用:
// Let's use the regular listener vvvvvvvvvvvvvvvvvvvvvv
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
HashMap<String, String> map = arrList.get(position);
String id = map.get("courseid");
// Do something
}
@Override
public void onNothingSelected(AdapterView<?> adapter) {}
});
其中arrList
是保存SimpleAdapter数据的类变量。
我喜欢这样但是kothing发生了并且logcat没有错误
那是因为你刚刚创建了arrList
,所以为空:
ArrayList<HashMap<String, String>> arrList = new ArrayList<HashMap<String,String>>();
for (HashMap<String, String> map2 : arrList) { // This arrList has no data!
您需要使用创建SimpleAdapter时使用的ArrayList。
new SimpleAdapter(this, arrList, ...);
这是必须使用的ArrayList,必须是类变量。
答案 1 :(得分:0)
你的帖子有点难以理解,但我想我有个主意。你有一个由一个arraylist填充的微调器,在每个索引上有多个hashmaps,用于微调器上的每个“梯级”。因此,当选择该项时,您希望获得所选的单个键并对其执行某些操作。我们知道,hashMap
并没有真正编入索引,因此我们必须使用其他方法来实现它,对吗?
ArrayList<HashMap<String, String>> arrList = new ArrayList<HashMap<String,String>>();
spinner.setOnItemSelectedListener(new CustomOnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long id) {
// for each key in the hashMap at this position..
for (String key : arrList.get(position).keySet()) {
if (key == "Calculus") {
// do something
} else if (key == "Physics") {
// do something else
}
}
}
这个想法非常简单。你可以在微调器上选择的位置的索引处获得hashMap的整个keySet,并根据它所说的内容为每个键执行一些操作。假设您只有一个键值对,这应该没有太多麻烦。
但是我不得不说你应该重新考虑一下这个设计。你有多个hashMap容器,每个容器只包含一个东西。这真的是浪费资源。很难推荐替代方案,因为我不知道如何使用这些数据,但你应该知道在java中制作对象并不是免费的。