2017-04-03 12 views
1

フラグメントが作成されるまで取得されないデータをスピナーに挿入しようとしています。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内部で動作しますか?私は、テストArrayAdapterをコメントアウト&データ用ArrayAdapterを作成し、それを新しいのArrayListを与えた後、私は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); 
} 

logcatが、私はそこに思っ

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 

ですフラグメント化インターフェースへのアクティビティに問題がありましたが、logcatは正常に動作していると伝えます。 &でテストアダプタをクリアしようとしましたが、新しいArrayListでリセットしました。最初のアダプタは残してください。& 2番目のアダプタ、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); 

注意を。

関連する問題