2012-04-25 78 views
1

我有从我的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

确定我最后的修复是使用阵列适配器与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代码