使用自定义光标适配器和“空”选择的微调器
问题描述:
我有从我的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;
}
}
答
确定我最后的修复是使用阵列适配器与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);
,然后从微调选择一个项目后,你可以得到这样的
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;
}
}
的ID代码