使用onItemSelected外部的值

时间:2013-11-21 16:39:05

标签: android spinner

我有一系列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中获取所选值?非常感谢。

2 个答案:

答案 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

的适配器时指定的对象相匹配