如何从微调器中检索特定对象信息
How to retrieve specific object information from a spinner
我正在处理我的 android 应用程序中的一些微调器,在单击按钮时我想获取特定的对象信息。我知道 mySpinner.getSelectedItem().toString();
但是打印出我的对象 toString();
方法是什么。假设我想从当前在微调器上选择的 Course
对象中 getCredits();
。我该怎么做?
这里是为了让您了解我正在尝试做什么:
for(int i = 0; i < allSpinners.size(); i++) {
System.out.println(allSpinners.get(i).getSelectedItem().toString());
}
我需要从列表中的所有微调器中获得所有积分。
此代码而不是 System.out.println();
需要通过 getCredits();
方法获取 Course
对象的学分并将它们加在一起 +=
但我不确定如何到达该对象在旋转器列表中。
编辑:抱歉不清楚。每个微调器包含大约 300 个对象,这些对象是从 ArrayList 中提取的,ArrayList 是通过从文本文件中获取对象的 TreeMap 填充的
在Android中你可以这样做
Spinner spinner = findViewById(R.id.spinner1);
spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
//Do what you want
break;
case 1:
//Do what you want
break;
}
}
});
微调器列表总是 填充了其适配器提供的字符串,因此当从微调器中选择一个项目时,除了字符串之外,您别无所求;所以你需要一些方法来利用这个字符串来获取你的自定义对象("Course" 在你的例子中); switch
语句是通过从 mySpinner.getSelectedItem().toString();
返回的 String
'course name' 来实现的,然后在每个 switch case
上实例化一个 Course
对象,然后像示例中那样做任何您想做的事 getCredits();
如果您要触发侦听器,同样适用
mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch(position) // switch on item position in adapter
String selection = (String) parent.getItemAtPosition(position);
switch(selection) // switch on item String
}
}
如果您需要任何进一步的帮助,我将非常欢迎!
谢谢大家的提醒,原来courseMap.get(allSpinners.get(i).getSelectedItem().toString()).getCredits();
是我应该做的。所有这些都在一个 for 循环中,其中 i < allSpinner.size();
是 Spinners
的数组
我正在处理我的 android 应用程序中的一些微调器,在单击按钮时我想获取特定的对象信息。我知道 mySpinner.getSelectedItem().toString();
但是打印出我的对象 toString();
方法是什么。假设我想从当前在微调器上选择的 Course
对象中 getCredits();
。我该怎么做?
这里是为了让您了解我正在尝试做什么:
for(int i = 0; i < allSpinners.size(); i++) {
System.out.println(allSpinners.get(i).getSelectedItem().toString());
}
我需要从列表中的所有微调器中获得所有积分。
此代码而不是 System.out.println();
需要通过 getCredits();
方法获取 Course
对象的学分并将它们加在一起 +=
但我不确定如何到达该对象在旋转器列表中。
编辑:抱歉不清楚。每个微调器包含大约 300 个对象,这些对象是从 ArrayList 中提取的,ArrayList 是通过从文本文件中获取对象的 TreeMap 填充的
在Android中你可以这样做
Spinner spinner = findViewById(R.id.spinner1);
spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
//Do what you want
break;
case 1:
//Do what you want
break;
}
}
});
微调器列表总是 填充了其适配器提供的字符串,因此当从微调器中选择一个项目时,除了字符串之外,您别无所求;所以你需要一些方法来利用这个字符串来获取你的自定义对象("Course" 在你的例子中); switch
语句是通过从 mySpinner.getSelectedItem().toString();
返回的 String
'course name' 来实现的,然后在每个 switch case
上实例化一个 Course
对象,然后像示例中那样做任何您想做的事 getCredits();
如果您要触发侦听器,同样适用
mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch(position) // switch on item position in adapter
String selection = (String) parent.getItemAtPosition(position);
switch(selection) // switch on item String
}
}
如果您需要任何进一步的帮助,我将非常欢迎!
谢谢大家的提醒,原来courseMap.get(allSpinners.get(i).getSelectedItem().toString()).getCredits();
是我应该做的。所有这些都在一个 for 循环中,其中 i < allSpinner.size();
是 Spinners