2017-09-16 9 views
0

私は3人のスピナーのために1つのコードを実装したいと思います。ユーザーが登録時に生年月日を記入し、DOBを更新したい場合、DOBはスピナーIを渡します日と月でそれをやったことがありますが、アダプターの年に1つの問題があります。アダプターは(今年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)選択したいスピナーの項目のインデックスを取得します。私はそれを試みたが、動作していない

spinYear.setAdapter(adapter); 

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

この方法は、位置0を取得し、コードの下に使用するfirst.tryそれを設定するので、あなたがでonItemSelected()方法を確認する必要があります。 -

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

を:あなたにそうsetAdapterを呼び出した後

関連する問題