我有一系列Spinners,小时[]。我在循环中设置它。当选择一个项目时,我需要将它并将其插入到数据库表中,因此我需要onItemSelected()函数中的循环计数器的值。我该怎么做呢?这是代码:
for(int i=0; i<36; i++)
{
hours[i].setAdapter(adapter);
hours[i].setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> adapterView, View view, int x, long l)
{
String in=String.valueOf(adapterView.getSelectedItem());
DBHelper db=new DBHelper(AcceptTimetable.this, null, null, 1);
db.changeHour((int)Math.ceil(i/6), (i+1)%6, new Subject(in));
//need to use i here, but it's giving an error
db.close();
}
public void onNothingSelected(AdapterView<?> arg)
{
//do nothing
}
});
}
另外,我不确定String in = String.valueOf(adapterView.getSelectedItem());是正确的。谁能告诉我如何从Spinner中获取所选值?非常感谢。
答案 0 :(得分:0)
试试这个..
for(int i=0; i<36; i++)
{
Log.v("Select Items in Spinner",hours[i].getSelectedItem().toString().trim());
}
从该日志中您可以看到结果。
答案 1 :(得分:0)
有两种方法可以做到这一点。
更简单但效率更低的是包含hours[i].setPrompt(String.valueOf(i))
,然后通过int index = Int.parse(((Spinner) adapterView).getPrompt())
在侦听器中检索该值。
更有效的方法是在单独的类中扩展Spinner并添加索引属性并将索引保留在其中。
编辑:getSelectedItem()
方法返回一个对象,其类型与初始化绑定到AdapterView