2017-04-03 31 views
1

조각이 생성 될 때까지 검색되지 않는 데이터로 spinner를 채우려고합니다.Fragment가 이미 생성 된 후 Spinner에서 ArrayAdapter 데이터를 생성/설정하는 방법

datesSpinner = (Spinner)rootView.findViewById(R.id.calldatesspinner); 
    /* 
    String[] testData = { "Abc", "Def", "Ghi", "Jkl" }; 
    ArrayList<String> xVals = new ArrayList<>(); 
    for (int i = 0; i < testData.length; i++) 
     xVals.add(testData[i]); 
    dataAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, testData); 
    datesSpinner.setAdapter(dataAdapter); 
    */ 

을하지만 데이터를 검색 한 후 스피너에 어댑터를 설정하려고 할 때 오류 단지 빈 스피너를 얻을 : 테스트 데이터는 OnCreateView 내부 작동?

public void setSpinnerAdapter() { 
    for (int i = 0; i < datesPulled.size(); i++) { 
     System.out.println("Populating spinner: " + datesPulled.get(i)); 
    } 

    System.out.println("finished for loop"); 
    dataAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, datesPulled); 
    System.out.println("create array adapter"); 
    datesSpinner.setAdapter(dataAdapter); 
} 

로그 캣은

04-03 14:18:02.412 9671-9671/? I/System.out: Populating spinner: 2017-05-01 
04-03 14:18:02.412 9671-9671/? I/System.out: Populating spinner: 2017-06-01 
04-03 14:18:02.412 9671-9671/? I/System.out: Populating spinner: 2017-07-01 
04-03 14:18:02.412 9671-9671/? I/System.out: Populating spinner: 2017-08-01 
04-03 14:18:02.413 9671-9671/? I/System.out: finished for loop 

는 내가 거기에 생각이다 : 나는 & 그때 내가 OnCreateView에서했던 것처럼 그것을 설정하려고 그에게 새로운 ArrayList를 준 데이터를 ArrayAdapter와 생성, 테스트 ArrayAdapter와를 주석 인터페이스를 조각 내기위한 활동에 문제가 있었지만 logcat이 제대로 작동한다고 알려줍니다. 나는 &으로 테스트 어댑터를 초기화하려고 시도했다. 새 ArrayList로 리셋하고 첫 번째 어댑터는 & 두 번째 어댑터 인 notifyDataSetChanged() 등을 만들지 만 운은 없다. 어떤 이유로 새로운 ArrayAdapter를 만들거나 설정할 수는 없지만 그 이유는 무엇입니까?

+0

조각의'onViewCreated()'에서 setadapter() 메소드를 호출하십시오. – rafsanahmad007

+0

어댑터를 UI 스레드로 설정합니까? –

+0

onViewCreated를 사용하면 생성 된 ArrayAdapter를 볼 수 있습니다. 답장을 보내 주셔서 감사합니다 @ rafsanahmod007 – JC23

답변

0

난 당신이 항목에 대한 잘못된 레이아웃을 사용하는 생각이 시도 : 스피너 확장 뷰 및 축소 된 뷰에 대한 레이아웃을 필요로

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
     this, 
     android.R.layout.simple_list_item_1, 
     testData 
); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 

참고.