2011-02-24 139 views
6

这可能是一些简单直接的事情。Android - 设置微调起点

我有这样的代码......

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等

和我想要做的是开始在11-20选择微调,如果用户的dob使他那个年龄.... ?我知道setSelection会选择一个特定的值,但我需要为用户年龄制定正确的值。

所以我基本上想知道如何工作了这一点,并填写正确地选择了微调,感谢

回答

8

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

第二次读这个,我觉得这不是一个真正的Android问题。您要查找的是如何查看给定的出生日期是否将用户放置在给定的年龄段内。我已经看到乔达在这里完成的年龄数学: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); 
+0

嗯我有一个字符串dd/mm/yyyy的出生日期,我该如何解决这个问题 – Beginner 2011-02-28 13:34:24

+0

您可以使用SimpleDateFormat解析日期字符串到Date()对象中。 http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html – 2011-02-28 13:41:29

+0

回答编辑演示SimpleDateFormat。 – 2011-02-28 13:59:48

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

我没有检查出来,但我认为它有点像,你是后。我可能错了。将在一分钟内测试它。

+0

看到这个问题是我不知道你已经放置的范围年龄> 0 &&年龄<5 – Beginner 2011-02-28 14:53:52

+0

范围可以改变...在我的代码cursor.getstring(1)现在可能是0,但将来可能会改变 – Beginner 2011-02-28 14:54:42

+0

那么我只是检查了我的代码,并且dateDiff无效。 – AverageMarcus 2011-02-28 14:55:51