android - 选择其他项目时显示第一个项目文本的微调器

标签 android spinner onresume

我有一个 Spinner,它由 onResume() 方法中的 SimpleCursorAdapter 填充。选择也在 onResume 中设置:spinner.setSelection(x)

当我转到另一个 Activity 然后返回此 Activity 时,微调器显示第一个项目的文本,而不是所选项目的文本。

如何解决这个问题?

编辑:这是我的代码:

@Override
public void onResume(){
    super.onResume();
    fillSpinner();
}

private void fillSpinner() {
    Db = new DbAdapter(this);
    Db.open();
    final Cursor cursor = Db.getCats(true,true);
    startManagingCursor(cursor);

    String[] from = new String[]{DbAdapter.KEY_NAME};
    int[] to = new int[]{android.R.id.text1};

    SimpleCursorAdapter adapter =
            new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cursor, from, to);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner.setAdapter(adapter);

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
            cursor.moveToPosition(pos);
            spinnerval = cursor.getInt(cursor.getColumnIndexOrThrow(DbAdapter._ID));
            Log.d("spinnerval", spinnerval+"");
        }
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });

    spinner.setSelection(0);
    int now = hour*60*60+minute*60;
    Log.d("fillSpinner","now="+now+" / "+now/60.0/60.0);
    cursor.moveToFirst();
    while(cursor.moveToNext()){
        int s = cursor.getInt(cursor.getColumnIndexOrThrow(DbAdapter.KEY_START));
        int e = cursor.getInt(cursor.getColumnIndexOrThrow(DbAdapter.KEY_END));
        if(e<s){
            if(now>s){
                e+=24*60*60;
            }
            else{ 
                s-=24*60*60;
            }               
        }
        if(s<=now&&e>now){
            spinner.setSelection(cursor.getPosition());
        }
    }


    Db.close();

    spinner.invalidate();

}

编辑2:屏幕截图:

enter image description here

最佳答案

spinner.setSelection(cursor.getPosition()) 更改为 spinner.setSelection(cursor.getPosition(),true) 就可以了。

关于android - 选择其他项目时显示第一个项目文本的微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12159889/

相关文章:

java - Android 应用程序在暂停时崩溃

c# - HttpWebRequest:发布版本时访问被拒绝 - Xamarin (Android)

Android 模拟器创建上下文失败 0x3005

Android - 警告对话框 - 自制取消按钮

Android Spinner onItemSelected 结果到 TextView ?

java - 将数据从 Cursor 绑定(bind)到 Spinner Android

c# - Xamarin。恢复后的不同行为应用程序

android - 使用 Android 共享首选项来存储大量数据是个好主意吗?

r - 使用 R DataTable 包添加加载微调器

java - Activity 生命周期中的 onResume() 和 onPostResume() 有什么区别?