Android - 设置微调器起点

时间:2011-02-24 14:15:38

标签: android spinner

对于某些人来说,这可能是一件简单易事的事。

我有这段代码......

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);

我填充数组,一切运行正常。但是,我想在第一个项目(选择)处开始微调器的位置。我希望它从光标中的项目''here'开始,例如。我希望我有意义吗?

要将其放入“表格”第1列的上下文中,年龄范围是,而第2列是年龄范围。 所以在微调器中我得到0-5,6-10,11-20等

如果用户的d.o.b让他那个年龄的话,我想要做的就是开始在11-20选择的微调器....?我知道setSelection会选择一个特定的值,但我需要为用户年龄找出正确的值吗?

所以我基本上想知道如何解决这个问题并填充正确选择微调器,谢谢

2 个答案:

答案 0 :(得分:8)

Spinner类从AbsSpinner继承setSelection(int position, boolean animate)。使用所需默认值的位置调用该方法(并为动画位设置false)。你只需要遍历你的可能值列表来检查条件,所以也许我不明白你的困难在哪里?

第二次阅读此内容我的印象是,这不是一个Android问题。您正在寻找的是如何查看给定的出生日期是否将用户置于给定的年龄段。我在Joda看到了年龄数学:How do I calculate someone's age in Java?

从那里可以看出年龄是否在你给定的范围内。

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

我的答案还有一个补充。如果你不想在Android上运行Joda,那么这是另一种仅使用标准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);

答案 1 :(得分:0)

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);

我还没有检查出来,但我认为它是你所追求的。我可能错了。将在最短的时间内进行测试。