2017-05-21 9 views
0

Firebase에서 이름과 ID를 모두 가져 와서이를 배열에 저장하고 이름 값으로 만 스피너를 채 웁니다.배열에있는 객체의 필드에 액세스 Java

for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
        People p = snapshot.getValue(People.class); 
        peopleArray.add(new String[]{p.name, String.valueOf(p.id)}); 
       } 

       ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line, (List<String>) peopleArray); 
       spinner.setAdapter(dataAdapter); 

ArrayAdapter에서 peopleArray에 저장된 이름 만 표시하려고합니다. 어떻게해야합니까?

+0

대신 문자열 배열을 추가하는 이유 String peopleArray.add (p.name); –

+0

나중에 내 ID에 액세스해야하기 때문에 – Pop

+0

스피너 항목을 클릭하면 ID 양식 dataSnapShot 개체를 가져올 수 있습니다. –

답변

0

이보십시오! 이 도움이 되었기를 바랍니다.

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line); 

    for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
     People p = snapshot.getValue(People.class); 

     //just adding id in list use later 
     peopleArray.add(String.valueOf(p.id)); 

     //adding each name to your adapter 
     dataAdapter.add(p.name); 
    } 


    spinner.setAdapter(dataAdapter); 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      // get pID from peopleArray when item is selected 
      String pId = peopleArray.get(position); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 
+0

ID는 항상 0입니다. – Pop

+0

for 루프에 print 문을 추가하고, 귀하의 ID가 무엇인지 확인하십시오. –

+0

내 모델 클래스에서 오류가 발생했습니다. 이것은 큰 도움이되었습니다. 감사! – Pop

0
List<People > people = new ArrayList<>(); 
    List<String> peoplename = new ArrayList<>();  
    for(People people : people) { 
     System.out.println(people.getName()); 
     // add name in separate list then assign to spinner. 
     peoplename.add(people.getName()); 
    } 

설정 회

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line, peoplename);