具有自定义光标适配器和“空”选择的微调器

时间:2012-04-25 08:53:06

标签: cursor spinner adapter

我有光标从我的CarProfile表中选择记录并使用自定义适配器来显示 品牌,型号和旋转器选择中的线性板。我的问题是,我希望选择哪个“全部”为第一个项目,所以如果选择我可以显示所有汽车的信息。我的代码是:

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

    }
}

1 个答案:

答案 0 :(得分:0)

确定我最后的修复是在hashmap的帮助下使用数组适配器来存储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;
                }
            }