在数据库表中存储选定的微调项目 - Android

时间:2011-03-15 13:58:53

标签: android sqlite cursor spinner

所以我的情况就是这样。我有两张桌子。使用表单添加数据的主表,此表单有一个由第二个表驱动的微调器(此部分正常工作)。然后我希望微调器中的选定项存储在主表的foreignkey字段中。

我一直在使用以下代码:

private Spinner mSpinner;

mSpinner = (Spinner) findViewById(R.id.spinCat);

在我的填充字段方法中,我有以下内容:

  mSpinner.getSelectedItem();

但是这会将类似“android.database.sqlite.SQLiteCursor@43e5be60”的内容存储到数据库而不是名称中。

如果有人能提供一些帮助那就太棒了,这已经困扰了我好几天了,并且已经停止了一些发展。如果您需要查看更多代码,请不要犹豫。

非常感谢任何帮助。

编辑:新代码:

            mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View vw,
                    int pos, long id) {
                LinearLayout rowll = (LinearLayout) vw;
                TextView test = (TextView) rowll.getChildAt(0);
                Toast t = Toast.makeText(parent.getContext(), test
                        .getText().toString(), Toast.LENGTH_SHORT);
                t.show();

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // Do nothing..
            }
        });

2 个答案:

答案 0 :(得分:1)

getSelectedItem会返回Object(这就是您的输出看起来很像)。

您是否尝试过像这样简单地调用toString?

mSpinner.getSelectedItem().toString();

我个人只是在onItemSelected侦听器中设置了一个变量,但这也应该有用。我用的是:

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            myIP = parent.getItemAtPosition(position).toString();
        }

然后不断更新变量,当我连接到有问题的IP时,我只是将它添加到数据库中。

光标数据提取:

    while (cursor.moveToNext()) {
        ipList.add(cursor.getString(1));
    }

getString(int columnIndex)确实:以字符串形式返回所请求列的值。

http://developer.android.com/reference/android/database/Cursor.html

答案 1 :(得分:0)

不要使用.getChildAt(),请使用.getItemAtPositon()。请参阅http://developer.android.com/resources/tutorials/views/hello-spinner.html处代码的执行方式。