0

スピナーに SimpleCursorAdapter を設定しようとしています。しかし、スピナーは完全に空です。アイテムが表示されないだけです。エラー メッセージが表示されません。

私は何時間も間違っていることを理解しようとしてきました。あなたが私を助けてくれることを本当に願っています。

これは私のアクティビティの onCreate 関数です:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.insert);

    spinner     = (Spinner)     findViewById(R.id.spinner);
    fillSpinner();
}

これは、スピナーに入力する関数です。

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

        Log.d("fillSpinner","cursor.getCount: "+cursor.getCount()+" / cursor.getColumnCount: "+cursor.getColumnCount());//returns 8 and 4

        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);

        //...   

        cursor.close();
        Db.close();
    }

そして、これは私の DbAdapter クラスの getCats() 関数です。

public Cursor getCats(boolean times, boolean adapter) {

        String id = KEY_ID;
        if(adapter){
            id = KEY_ID +" "+_ID;
        }

        String columns = id+", "+KEY_NAME;
        if(times){
            columns+=", "+KEY_START+", "+KEY_END;
        }
        return Db.rawQuery("SELECT "+columns+" FROM "+CATS_TABLE+" ORDER BY "+KEY_ID+" ASC", null);
    }

そして私の定数:

private static final String CATS_TABLE  = "cats";

public static final String KEY_ID       = "id";
public static final String KEY_NAME     = "name";
public static final String KEY_START    = "start";
public static final String KEY_END      = "end";

public static final String _ID          = "_id";

前もって感謝します!

イエローズ

4

1 に答える 1

1

カーソルを閉じないでください。

スピナーを使用している間は、カーソルを開いたままにしておく必要があります。カーソルを呼び出した後、 を呼び出してシステム ハンドルを閉じますstartManagingCursor。心配する必要がなく、完了したら閉じます。

final Cursor cursor = Db.getCats(true,true); 
this.startManagingCursor(cursor);
于 2012-08-10T13:42:07.860 に答える