我要检索的 ID 应与 sqlite 数据库中的 ID 相同,而不是微调器的项目行的 ID。
我使用了以下链接中的代码并得到了一些异常。
我认为问题出在这里:
anId = Integer.valueOf(( (AnSco) spnAnsco.getSelectedItem () ).getIdan());
我试着做:
anId = ( (AnSco) spnAnsco.getSelectedItem () ).getIdan();
总是同样的问题。
加载微调器
private void loadSpinnerAnsco() {
        List<String> ansco = new ArrayList<String>();
        db = new DatabaseHelper(this);
        boolean ok = true;
        try {
            SQLiteDatabase dbs = db.getWritableDatabase();
            cursor = dbs.rawQuery(
                    "Select idan as _id, ansco from TAnSco order by ansco",
                    null);
            // looping through all rows and adding to list
            if (cursor.moveToFirst()) {
                do {
                    ansco.add(cursor.getString(1));
                } while (cursor.moveToNext());
            }
            // closing connection
            cursor.close();
            dbs.close();
            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item, ansco);
            // Drop down layout style - list view with radio button
            dataAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            // attaching data adapter to spinner
            spnAnsco.setAdapter(dataAdapter);
        } catch (Exception ex) {
            ok = false;
            AlertDialog.Builder b = new AlertDialog.Builder(this);
            b.setMessage(ex.toString());
            b.show();
        } finally {
            if (ok) {
                db.close();
            }
        }
    }
选择项目
public class anscoSpinner implements OnItemSelectedListener {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            String label = parent.getItemAtPosition(position).toString();
            AnSco an=new AnSco(label);
            anId = Integer.valueOf(( (AnSco) spnAnsco.getSelectedItem () ).getIdan());
            loadSpinnerPeriode(anId);
            // Showing selected spinner item
            Toast.makeText(parent.getContext(), "You selected: " + label+ " AnId: "+anId,
                    Toast.LENGTH_LONG).show();
        }
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub
        }
        // TODO Auto-generated method stub
    }
项目等级 Ansco
public class AnSco {
    int idan;
    String ansco;
    public AnSco(int idan, String ansco) {
        this.idan = idan;
        this.ansco = ansco;
    }
    public AnSco(String ansco) {
        this.ansco = ansco;
    }
    public AnSco() {
        // TODO Auto-generated constructor stub
    }
    public int getIdan() {
        return idan;
    }
    public void setIdan(int idan) {
        this.idan = idan;
    }
    public String getAnsco() {
        return ansco;
    }
    public void setAnsco(String ansco) {
        this.ansco = ansco;
    }
}
堆栈跟踪 :
10-21 13:34:59.319: E/AndroidRuntime(438): FATAL EXCEPTION: main
10-21 13:34:59.319: E/AndroidRuntime(438): java.lang.ClassCastException: java.lang.String
10-21 13:34:59.319: E/AndroidRuntime(438):  at com.android.moyenne.activity.MoyenneMain$anscoSpinner.onItemSelected(MoyenneMain.java:306)
10-21 13:34:59.319: E/AndroidRuntime(438):  at android.widget.AdapterView.fireOnSelected(AdapterView.java:864)
10-21 13:34:59.319: E/AndroidRuntime(438):  at android.widget.AdapterView.access$200(AdapterView.java:42)
10-21 13:34:59.319: E/AndroidRuntime(438):  at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:830)
10-21 13:34:59.319: E/AndroidRuntime(438):  at android.os.Handler.handleCallback(Handler.java:587)
10-21 13:34:59.319: E/AndroidRuntime(438):  at android.os.Handler.dispatchMessage(Handler.java:92)
10-21 13:34:59.319: E/AndroidRuntime(438):  at android.os.Looper.loop(Looper.java:123)
10-21 13:34:59.319: E/AndroidRuntime(438):  at android.app.ActivityThread.main(ActivityThread.java:4627)
10-21 13:34:59.319: E/AndroidRuntime(438):  at java.lang.reflect.Method.invokeNative(Native Method)
10-21 13:34:59.319: E/AndroidRuntime(438):  at java.lang.reflect.Method.invoke(Method.java:521)
10-21 13:34:59.319: E/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-21 13:34:59.319: E/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-21 13:34:59.319: E/AndroidRuntime(438):  at dalvik.system.NativeStart.main(Native Method)
10-21 13:35:02.119: I/Process(438): Sending signal. PID: 438 SIG: 9