所以我的情况就是这样。我有两张桌子。使用表单添加数据的主表,此表单有一个由第二个表驱动的微调器(此部分正常工作)。然后我希望微调器中的选定项存储在主表的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..
}
});
答案 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处代码的执行方式。