Android - Установить начальную точку Spinner - PullRequest
6 голосов
/ 24 февраля 2011

Это, вероятно, простая прямолинейная вещь для некоторых.

У меня есть этот код ...

SQLiteDatabase db = dbs.getReadableDatabase(); 
String SQL = "SELECT * FROM Table"; 
final Cursor cursor = db.rawQuery(SQL, null);
    array_spinner1[0] = "Select:";
    while (cursor.moveToNext()) {
      array_spinner1[i]= cursor.getString(1) + " - " + cursor.getString(2);
      i ++;
    } 
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                  android.R.layout.simple_spinner_item, array_spinner1);
    s1.setAdapter(adapter);

Я заполняю массив, и все работает нормально. Тем не менее, я хочу начать вращение позиции не с первого элемента (Выбрать). Я хочу, чтобы он начинался там, где элемент в курсоре = «здесь», например. Надеюсь, я понял?

Чтобы поместить его в контекст в «Таблице», в столбце 1 указывается возраст, а в столбце 2 - возраст. поэтому в блесне я получаю 0-5, 6-10, 11-20 и т. д.

и что я хочу сделать, так это запустить выбранный спиннер в 11-20, если пользователь d.o.b сделает его таким ... ....? Я знаю, что setSelection выбрал бы определенное значение, но мне нужно определить правильное для возраста пользователя?

Так что я в основном хочу знать, как с этим разобраться и заполнить, правильно выберите счетчик, спасибо

Ответы [ 2 ]

8 голосов
/ 28 февраля 2011

Класс Spinner наследует setSelection(int position, boolean animate) от AbsSpinner.Вызовите этот метод с позицией по умолчанию (и false для анимированного бита).Вам нужно только просмотреть список возможных значений, чтобы проверить условия, поэтому, может быть, я не понимаю, в чем заключается ваша проблема?

Прочитав это во второй раз, я получаю впечатление, что это не такдействительно вопрос Android.То, что вы ищете, - это как узнать, помещает ли пользователь данную дату в определенную возрастную группу.Я видел возрастную математику в Joda здесь: Как рассчитать чей-то возраст на Java?

Отсюда вопрос о том, попадает ли возраст в указанный диапазон.

boolean isInRange(Years age, int start, int end) {
  int intAge = age.getYears();
  if (intAge >= start && intAge <= end) {
    return true;
  } else {
    return false;
  }
}

Еще одно дополнение к моему ответу здесь.Если вы не хотите иметь дело с запуском Joda на Android, есть еще одна возможность рассчитать возраст, используя только стандартные компоненты Java.См. Третий пост.

http://www.coderanch.com/t/391834/java/java/there-better-way-calculate-age

В соответствии с вашим запросом для примера, вот SimpleDateFormat для строк даты.

String dateString = "04/02/2004";
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
Date parsedDate = format.parse(dateString, 1);
0 голосов
/ 28 февраля 2011
String DOB = "04/02/2004";
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
Date parsedDate = format.parse(DOB, 0);

Date dateNow = new Date(Date.getYear(),Date.getMonth(),Date.getDay());

Date dateDiff = dateNow - parsedDate;
int Age = dateDiff.getYear();

if(Age>0 && Age<5){
pos = 0;
}//etc....

s1.setSelection(pos, false);

Я не проверил это, но я думаю, что это то, что вам нужно. Я могу быть не прав. Проверим это за минуту.

...