2017-09-16 102 views
0

我想爲三個微調器實現一個代碼,用戶將在註冊時填寫出生日期,當他/她登錄並想要在那裏更新時,DOB將傳遞給微調器I已經完成了它的日期和月份,但有一年的問題,即適配器。適配器需要(thisYear-18)年份並打印它,但我希望spinYear將採用我在註冊時存儲的值。在微調框上設置文本

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.edit_details_fragment); 
    Spinner spinDay = (Spinner) findViewById(R.id.spinnerDay); 
    Spinner spinMonth = (Spinner) findViewById(R.id.spinnerMonth); 
    Spinner spinYear = (Spinner) findViewById(R.id.spinnerYear); 
    Button update = (Button)findViewById(R.id.update); 

    Intent intent =getIntent(); 
    String str_DOB = intent.getStringExtra("dateofbirth"); 
    Log.e("DOB************",str_DOB); 
    String[] d = str_DOB.split("-"); 
    Log.e("d[0]-------",d[0].toString()); 
    spinYear.setSelection (Integer.parseInt(d[0])); 
    spinMonth.setSelection (Integer.parseInt(d[1])); 
    spinDay.setSelection (Integer.parseInt(d[2])); 

的年份適配器代碼

ArrayList<String> years = new ArrayList<String>(); 
    int thisYear = Calendar.getInstance().get(Calendar.YEAR); 
    thisYear=thisYear-18; 
    for (int i = thisYear; i >= 1967; i--) { 
     years.add(Integer.toString(i)); 
    } 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, years); 
    spinYear.setAdapter(adapter); 
    spinYear.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) { 
      final String yearName = adapterView.getItemAtPosition(pos).toString().trim(); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 
     } 
    }); 

回答

2

如果我理解正確的話,你要設置基礎上,今年微調的選擇你通過意向傳遞。

setSelection(int position)獲取要選擇的微調器中項目的索引。

在調用setAdapter做像這樣:

spinYear.setAdapter(adapter); 

int index = years.indexOf(d[0]); 
if (index != -1) { 
    spinYear.setSelection(index); 
} 
0

你應該檢查onItemSelected()方法,因爲這種方法得到的位置0,並將其設置first.try使用下面的代碼: -

spinYear.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) { 

if((d[2]).equals(adapterView.getItemAtPosition(pos).toString())) 
{ 
      final String yearName = adapterView.getItemAtPosition(pos).toString().trim(); 
} 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 
     } 
    }); 
+0

我嘗試過,但不工作 –