我有光标从我的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;
}
}
答案 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;
}
}