2017-11-15 5 views
1

첫 번째 스피너 (spinnerBreeds) 값을 변경하거나 추가하면 올바르게 작동합니다. 그러나 두 번째 spinner은 값을 업데이트하지 않습니다. adapternotifyDataSetChanged()으로 전화를 걸려고했지만 여전히 작동하지 않습니다.두 번째 스피너에서 값을 업데이트하지 않습니다.

내 코드는 다음과 같습니다

public class MainActivity extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      // Create DataHelper object and insert some sample data 
      DataHelper datahelper = new DataHelper(this); 
      datahelper.insertBreed ("Beagle"); 
      datahelper.insertBreed ("Bulldog"); 
      datahelper.insertBreed ("Chow Chow"); 

      // Get sample data from the database and display them in the spinner 
      Spinner spinnerBreeds = (Spinner) findViewById(R.id.spinnerBreeds); 
      ArrayList<String> list = datahelper.getAllBreeds(); 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_layout, R.id.text, list); 
      spinnerBreeds.setAdapter(adapter); 



      //Init second spinner 
      DataHelper2 datahelper2 = new DataHelper2(this); 
      datahelper2.insertAge("1 year"); 
      datahelper2.insertAge ("2-3 years"); 
      datahelper2.insertAge("4-5 years"); 
      datahelper2.insertAge("6-9 years"); 
      datahelper2.insertAge("10+ years"); 


      // Get sample data from the database and display them in the spinner 
      Spinner spinnerAge = (Spinner) findViewById(R.id.spinnerAge); 
      ArrayList<String> list2 = datahelper2.getAllAge(); 
      ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, R.layout.spinner_layout, R.id.text, list2); 
      spinnerAge.setAdapter(adapter2); 






    } 
+0

가 선택한 첫 번째 스피너 항목에 그 후 두 회에 소스를 적용 데이터로부터 얻을 두 번째 회 전자에 설정합니다. – Ironman

답변

1
Try this code........ 
spinnerBreeds.setOnItemSelectedListener(new OnItemSelectedListener() { 

        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, 
          int position, long id) { 
         // TODO Auto-generated method stub 

ArrayList<String> list2 = datahelper2.getAllAge(); 
    ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, list2); 

       spinnerAge.setAdapter(adapter2); 
        } 

        @Override 
        public void onNothingSelected(AdapterView<?> parent) { 
         // TODO Auto-generated method stub 

        } 
       }); 
+0

오류가 발생했습니다 : ArrayAdapter (<익명의 OnItemSelectedListner>, int, int, ArrayList ) –

+0

에 적합한 생성자가 없습니다. 레이아웃 및 textview ID가 적절하게 설정되었거나 확인되지 않았습니다 .. – Pratik18

0

이 교체 :

new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, list); 
new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, list2) 

그리고 대신의 :

new ArrayAdapter<String>(this, R.layout.spinner_layout, R.id.text, list); 
new ArrayAdapter<String>(this, R.layout.spinner_layout, R.id.text, list2) 

ArrayList<String> list = datahelper.getAllBreeds(); 

사용 :

ArrayList<String> list = new ArrayList<String>(); 
for(DataHelper d: dataHelper) 
     { 
      if (d.getBreed() != null) 
      { 
       list1.add(d.getBreed(); 
      } 
     } 

그리고 대신 :

ArrayList<String> list2 = datahelper2.getAllAge(); 

사용 :

ArrayList<String> list2 = new ArrayList<String>(); 
for(DataHelper2 a : dataHelper2) 
     { 
      if (a.getAge() != null) 
      { 
       list2.add(a.getAge(); 
      } 
     } 
+0

추가 도움이 필요하면 나도 잊지 마세요. 그것이 당신을 위해 작동하는 경우 답변 으로이 게시물을 표시하려면 :) –