2011-02-24 61 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