1

CarProfileテーブルからレコードを選択するカーソルがあり、カスタムアダプターを使用して、スピナー選択でブランド、モデル、およびリネンプレートを表示します。私の問題は、最初のアイテムに「ALL」と表示される選択をしたいので、選択された場合、すべての車の情報を表示できることです。私のコードは:

            // spinner 1
        mDbAdapter.open();
        Cursor cursorCP = mDbAdapter.fetchAllProfiles();
        startManagingCursor(cursorCP);
        mDbAdapter.close();

        MyCustomAdapter ad = new MyCustomAdapter(this, cursorCP);
        spinCP.setAdapter(ad);

    public class MyCustomAdapter extends CursorAdapter {

    public MyCustomAdapter(Context context, Cursor c) {
        super(context, c);

    }
    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        TextView nameTextView = (TextView) view
                .findViewById(android.R.id.text1);

        String brand = cursor.getString(cursor
                .getColumnIndex(DefaxedDbAdapter.KEY_BRAND));
        String model = cursor.getString(cursor
                .getColumnIndex(DefaxedDbAdapter.KEY_MODEL));
        String licence = cursor.getString(cursor
                .getColumnIndex(DefaxedDbAdapter.KEY_LICENCEPLATE));
        nameTextView.setText(brand + "-" + model + "-" + licence);
    }
    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        View view = View.inflate(context,
                android.R.layout.simple_spinner_dropdown_item, null);
        return view;

    }
}
4

1 に答える 1

0

最後に私の修正は、ハッシュマップの助けを借りて配列アダプターを使用してIDを格納することでした。これが私が使ったコードです

        ArrayList<String> arr = new ArrayList<String>();
    arr.add(DefaxedDbAdapter.ALL_LABEL);

    hm = new HashMap<String, Integer>();

    while (!cursorProfiles.isAfterLast()) {
        int rowId = cursorProfiles.getInt(cursorProfiles
                .getColumnIndex(DefaxedDbAdapter.KEY_ROWID));
        String brand = cursorProfiles.getString(cursorProfiles
                .getColumnIndex(DefaxedDbAdapter.KEY_BRAND));
        String model = cursorProfiles.getString(cursorProfiles
                .getColumnIndex(DefaxedDbAdapter.KEY_MODEL));
        String licencePlate = cursorProfiles.getString(cursorProfiles
                .getColumnIndex(DefaxedDbAdapter.KEY_LICENCEPLATE));
        arr.add(brand + "-" + model + "-" + licencePlate);
        hm.put(brand + "-" + model + "-" + licencePlate, rowId);
        cursorProfiles.moveToNext();
    }

    ArrayAdapter<String> adapterProfiles = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_dropdown_item, arr);
    profilesSpinner.setAdapter(adapterProfiles);

スピナーからアイテムを選択した後、そのようなIDを取得できます

                if (profilesSpinner.getSelectedItemId() != 0) {

                String tmp = profilesSpinner.getSelectedItem().toString();
                carId = hm.get(tmp);

                if (alreadySet) {
                    SQLquery += " AND expenses.carId =" + carId;
                } else {
                    SQLquery += " WHERE expenses.carId =" + carId;
                }
            }
于 2012-05-04T06:52:46.387 に答える