如何从数据库项目的价值,并把它设置为微调值 [英] How to get the value of an item from database and set it as the spinner value

查看:125
本文介绍了如何从数据库项目的价值,并把它设置为微调值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据库,该数据库填充列表视图。当我渴望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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆