我正在与我的android应用程序中的一些微调器打交道,然后单击按钮,我想获取特定的对象信息。我知道mySpinner.getSelectedItem().toString();
,但这可以打印出我的Objects toString();
方法。假设我想从微调器上当前选择的getCredits();
对象中Course
。我该怎么办?
这是给您一个我要做什么的想法:
for(int i = 0; i < allSpinners.size(); i++) {
System.out.println(allSpinners.get(i).getSelectedItem().toString());
}
我需要从列表中的所有微调器中获得所有功劳。
此代码而不是System.out.println();
需要通过Course
方法获得getCredits();
对象的功劳,并将它们加在一起+=
,但是我不确定如何到达对象在微调框列表中。
编辑:很抱歉,不清楚。每个微调器拥有大约300个对象,这些对象是从ArrayList中提取的,该ArrayList是通过TreeMap填充的,TreeMap从文本文件中获取对象
答案 0 :(得分:1)
微调器列表总是 ,其适配器提供了字符串,因此从微调器中选择项目时,除了字符串以外,您别无所求。因此,您需要某种方式来利用此字符串来获取您的自定义对象(示例中为“ Course”);通过使用switch
返回的String
'课程名称',然后在每个mySpinner.getSelectedItem().toString();
上实例化一个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
}
}
如果您需要任何进一步的帮助,我们将非常欢迎!
答案 1 :(得分:0)
在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;
}
}
});
答案 2 :(得分:0)
感谢大家的提醒,事实证明courseMap.get(allSpinners.get(i).getSelectedItem().toString()).getCredits();
是我应该怎么做的。所有这些都在一个for循环中,其中i < allSpinner.size();
是Spinners的数组