データベーステーブルから取り込まれたスピナーがいくつかあります。次の形式のデータがある例のように、データがスピナーでどのようにソートされるかを制御したいと思います。
1,2,3,4,5,6,7,8,9,10,11,12など
しかし、これはスピナーによって次のようにソートされます。
1,10,11,12,13,14,15,16,17,18,19,2,20,21など
明らかに正しくありません!
私の Spinner コードの例 (上記の Spinner ではありません) を以下に示します。
Cursor componentCursor = rmDbHelper.fetchAllComponents();
startManagingCursor(componentCursor);
// create an array to specify which fields we want to display
String[] from2 = new String[]{RMDbAdapter.COMPONENT_FORM_TEXT};
//INSPECTOR_NAME = "inspector_name"
// create an array of the display item we want to bind our data to
int[] to2 = new int[]{android.R.id.text1};
// create simple cursor adapter
SimpleCursorAdapter componentSpinnerAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, componentCursor, from2, to2 );
componentSpinnerAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
// get reference to our spinner
componentSpinner.setAdapter(componentSpinnerAdapter);
if (locationId > 0) { // Set spinner to match saved data in database
int spinnerPosition = 0;
for (int i = 0; i < componentSpinner.getCount(); i++)
{
Cursor cur = (Cursor)(componentSpinner.getItemAtPosition(i));
//--When your bind you data to the spinner to begin with, whatever columns you
//--used you will need to reference it in the cursors getString() method...
//--Since "getString()" returns the value of the requested column as a String--
//--(In my case) the 4th column of my spinner contained all of my text values
//--hence why I set the index of "getString()" method to "getString(3)"
String componentSpinnerString = cur.getString(2).toString();
if(componentSpinnerString.equals(componentSpinnerData.toString()))
{
//--get the spinner position--
spinnerPosition = i;
break;
}
}
componentSpinner.setSelection(spinnerPosition);
}
else { // Set spinner to default
int spinnerPosition = 0;
for (int i = 0; i < componentSpinner.getCount(); i++)
{
Cursor cur = (Cursor)(componentSpinner.getItemAtPosition(i));
String componentSpinnerString = cur.getString(2).toString();
if(componentSpinnerString.equals("Upright (front)"))
{
//--get the spinner position--
spinnerPosition = i;
break;
}
}
componentSpinner.setSelection(spinnerPosition);
}
以下のデータベース コード (gotuskar の要求による):
public Cursor fetchAllComponents() {
return rmDb.query(COMPONENT_TABLE, new String[] {
COMPONENT_ID, RACKING_SYSTEM, COMPONENT_FORM_TEXT, TEXT_BOXES_DATA},
null, null, null, null, null);
}