android - 从数据库游标中填满时获​​取微调器的项目选择

标签 android spinner android-spinner

在我的 Android 应用程序中,我有一个带有 Spinners 的布局。我想要做的是从第一个微调器中选择一个项目,填充第二个微调器。

第一个微调器由游标(数据库查询的结果)填充,如下所示:

Spinner combo1 = (Spinner) findViewById(R.id.combo1);
mDbH.open();
Cursor c1 = null;
c1 = mDbH.consulta4();
startManagingCursor(c1);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,c1,new String[] {"nombre"},new int[] {android.R.id.text1});
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
combo1.setAdapter(adapter);

这很好用!问题出在我的事件监听器中:

combo1.setOnItemSelectedListener(new OnItemSelectedListener(){
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        String est = String.valueOf(combo1.getSelectedItem());
        int idEst = (int) id;
        Log.e("est",est);
        Log.e("idEst",""+idEst);
        mDbH.open();
        Cursor c = null;
        c = mDbH.consulta5(idEst,est);
        SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(getApplicationContext(),android.R.layout.simple_spinner_item,c,new String[] {"nombre"},new int[] {android.R.id.text1});
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        combo1.setAdapter(adapter2);
    }

    public void onNothingSelected(AdapterView<?> arg0) {}

});

因为,在 LogCat 中,行 Log.e("est",est);显示这个:

10-25 09:48:50.390: E/est(3462): android.database.sqlite.SQLiteCursor@40625638

当然,这个值不在我的数据库中,第二个光标是空的,微调器也没有填满任何东西!!所以,这是我的问题,当从数据库中填满时,如何从微调器中选择项目?我也试过了:

String est = combo1.getSelectedItem().toString();

String est = parentView.getItemAtPosition(position).toString();

但是结果是一样的!!难道我做错了什么?请帮忙!

谢谢!

最佳答案

由于您的 Spinner 是使用 SimpleCursorAdapter 填充的,getItemAtPositiongetSelectedItem 将返回一个 游标 引用。使用:

Cursor c=(Cursor) combo1.getSelectedItem();
String est=c.getString(c.getColumnIndex("nombre");

同样适用于 getItemAtPosition(position)

关于android - 从数据库游标中填满时获​​取微调器的项目选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070956/

相关文章:

android - 如何移除 ICS 微调器上的线?

android - 找到所有匹配标签的微调器

android - 如何在不阻塞 UI 线程的情况下用来自 Room 的数据填充微调器

android - 获取Android在x轴的旋转角度

java - 重新安装 Eclipse 后无法再构建项目

android - 关于纯用 c++ 编写 android 应用程序(不是混合 java/c++ 应用程序)的良好初学者 Material

android - 我的应用更新不会显示在 Google Play 商店中

Android:如何将一个微调器中的字符串值复制到另一个微调器

Android - Spinner 的数据消失了

android - 在微调器中更改样式的问题