如何从数据库项目的价值,并把它设置为微调值 [英] How to get the value of an item from database and set it as the spinner value
问题描述
我有一个数据库,该数据库填充列表视图。当我渴望preSS从列表视图列表项我得到一个上下文菜单在那里我有编辑的选项。当编辑选项,单击我打开一个活动,并从数据库中的相应字段的所有值。现在,在这里我想从数据库中获取的值并显示在微调。微调已经具备了这些价值观,并从数据库得到填充。我曾尝试以下,但我得到一个错误说我不能投了SimpleCursorAdapter到ArrayAdapter ..
字符串osub = cursor.getString(Database.INDEX_SUBJECT);
光标CS = mDBS.querySub(osub);
字符串潜艇= cs.getString(DatabaseSub.INDEX_SSUBJECT);
如果(CS!= NULL){
ArrayAdapter<串GT; myAdap =(ArrayAdapter<串GT;)subSpinner.getAdapter();
//强制转换为ArrayAdapter INT spinnerPosition = myAdap.getPosition(潜艇); //根据值设置默认
subSpinner.setSelection(spinnerPosition);
请告诉我如何做到这一点..谢谢你..我是比较新的,所以请让我知道如果我忽视的东西。
谢谢..
修改
querySub
法
公共光标querySub(字符串子)抛出的SQLException {
光标光标= mDatabase.query(真,DATABASE_TABLE,sAllColumns,像SSUB+'+分+',NULL,NULL,NULL,NULL,NULL);
如果(cursor.moveToNext()){
返回游标;
}
cursor.moveToFirst();
返回游标;
}
错误日志
12月6日至5日:11:14.144:E / AndroidRuntime(775):致命异常:主要
十二月六日至5日:11:14.144:E / AndroidRuntime(775):了java.lang.RuntimeException:无法启动活动ComponentInfo {an.droid.kit / an.droid.kit.DetailsActivity}:java.lang.ClassCastException:机器人.widget.SimpleCursorAdapter不能转换为android.widget.ArrayAdapter
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.app.ActivityThread.access $ 600(ActivityThread.java:123)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1147)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.os.Handler.dispatchMessage(Handler.java:99)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.os.Looper.loop(Looper.java:137)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.app.ActivityThread.main(ActivityThread.java:4424)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在java.lang.reflect.Method.invokeNative(本机方法)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在java.lang.reflect.Method.invoke(Method.java:511)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在dalvik.system.NativeStart.main(本机方法)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):java.lang.ClassCastException:致android.widget.SimpleCursorAdapter不能转换为android.widget.ArrayAdapter
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在an.droid.kit.DetailsActivity.dbToUI(DetailsActivity.java:217)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在an.droid.kit.DetailsActivity.onCreate(DetailsActivity.java:104)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.app.Activity.performCreate(Activity.java:4465)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
十二月六日至5日:11:14.144:E / AndroidRuntime(775):11 ...更多
我也遇到过类似的问题。 问题:我必须设置微调到一个特定的字符串值,不知道在什么位置该字符串值在微调控件本身。我创建的变通是采取通过其文本值微调控制和周期。在每个位置比较纺纱文本价值,我想将其设置为指定的字符串值。如果匹配,然后得到的当前位置,并设置基于位置我的纺纱选择。
INT spinnerPosition = 0;的for(int i = 0; I< yourSpinner.getCount();我++)
{
光标CUR =(光标)(yourSpinner.getItemAtPosition(I)); // - 当你的绑定您的数据微调,首先,不管你列
// - 用你需要引用它在光标getString()方法... // - 由于的getString()返回作为String--请求列的值
// - (对我来说)我的飞旋的第4列包含了所有我的文字值
// - 因此为什么我设置的getString()方法的指数的getString(3) 串currentSpinnerString = cur.getString(3)的ToString();
如果(currentSpinnerString.contains(你要设置的微调到这里地方字符串))
{
// - 得到微调position--
spinnerPosition = I;
打破;
}
} yourSpinner.setSelection(spinnerPosition);
I have a database and the database populates a listview. when i long press a list item from the listview i get a context menu where i have the option to edit. When the edit option is clicked i open an activity and get all the values of the respective fields from the database. Now, here I want to get a value from the database and show it in the spinner. the spinner already has these values and is getting populated from the database... I have tried the following, but i get an error saying I can't cast a SimpleCursorAdapter to an ArrayAdapter..
String osub = cursor.getString(Database.INDEX_SUBJECT);
Cursor cs = mDBS.querySub(osub);
String subs = cs.getString(DatabaseSub.INDEX_SSUBJECT);
if(cs!=null){
ArrayAdapter<String> myAdap = (ArrayAdapter<String>) subSpinner.getAdapter();
//cast to an ArrayAdapter
int spinnerPosition = myAdap.getPosition(subs);
//set the default according to value
subSpinner.setSelection(spinnerPosition);
Please tell me how to do this.. Thank you.. I am relatively new so please let me know if I am overlooking something.
Thanks..
EDIT
querySub
method
public Cursor querySub(String sub) throws SQLException {
Cursor cursor = mDatabase.query(true, DATABASE_TABLE, sAllColumns, "ssub like " + "'" + sub + "'", null, null, null, null, null);
if (cursor.moveToNext()) {
return cursor;
}
cursor.moveToFirst();
return cursor;
}
Error Log
06-05 12:11:14.144: E/AndroidRuntime(775): FATAL EXCEPTION: main
06-05 12:11:14.144: E/AndroidRuntime(775): java.lang.RuntimeException: Unable to start activity ComponentInfo{an.droid.kit/an.droid.kit.DetailsActivity}: java.lang.ClassCastException: android.widget.SimpleCursorAdapter cannot be cast to android.widget.ArrayAdapter
06-05 12:11:14.144: E/AndroidRuntime(775): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-05 12:11:14.144: E/AndroidRuntime(775): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-05 12:11:14.144: E/AndroidRuntime(775): at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-05 12:11:14.144: E/AndroidRuntime(775): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-05 12:11:14.144: E/AndroidRuntime(775): at android.os.Handler.dispatchMessage(Handler.java:99)
06-05 12:11:14.144: E/AndroidRuntime(775): at android.os.Looper.loop(Looper.java:137)
06-05 12:11:14.144: E/AndroidRuntime(775): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-05 12:11:14.144: E/AndroidRuntime(775): at java.lang.reflect.Method.invokeNative(Native Method)
06-05 12:11:14.144: E/AndroidRuntime(775): at java.lang.reflect.Method.invoke(Method.java:511)
06-05 12:11:14.144: E/AndroidRuntime(775): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-05 12:11:14.144: E/AndroidRuntime(775): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-05 12:11:14.144: E/AndroidRuntime(775): at dalvik.system.NativeStart.main(Native Method)
06-05 12:11:14.144: E/AndroidRuntime(775): Caused by: java.lang.ClassCastException: android.widget.SimpleCursorAdapter cannot be cast to android.widget.ArrayAdapter
06-05 12:11:14.144: E/AndroidRuntime(775): at an.droid.kit.DetailsActivity.dbToUI(DetailsActivity.java:217)
06-05 12:11:14.144: E/AndroidRuntime(775): at an.droid.kit.DetailsActivity.onCreate(DetailsActivity.java:104)
06-05 12:11:14.144: E/AndroidRuntime(775): at android.app.Activity.performCreate(Activity.java:4465)
06-05 12:11:14.144: E/AndroidRuntime(775): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-05 12:11:14.144: E/AndroidRuntime(775): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
06-05 12:11:14.144: E/AndroidRuntime(775): ... 11 more
I too encountered a similar problem. The issue: I had to set the spinner to a particular string value without knowing what position that string value was in the spinner control itself. The work around that I created was to take the spinner control and cycle through its text values. At each position compare the spinners text value to the given string value that I wanted to set it to. If it matches then get that current position and set my spinners selection based on that position.
int spinnerPosition = 0;
for (int i = 0; i < yourSpinner.getCount(); i++)
{
Cursor cur = (Cursor)(yourSpinner.getItemAtPosition(i));
//--When your bind you data to the spinner to begin with, whatever columns you
//--used you will need to reference it in the cursors getString() method...
//--Since "getString()" returns the value of the requested column as a String--
//--(In my case) the 4th column of my spinner contained all of my text values
//--hence why I set the index of "getString()" method to "getString(3)"
String currentSpinnerString = cur.getString(3).toString();
if(currentSpinnerString.contains("place string you want to set the spinner to here"))
{
//--get the spinner position--
spinnerPosition = i;
break;
}
}
yourSpinner.setSelection(spinnerPosition);
这篇关于如何从数据库项目的价值,并把它设置为微调值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!