データベースからArrayList
にデータを取得していますが、これを使用してSpinner
を設定しています。
これはすべて正常に動作し、ドロップダウンリストに項目が表示されます。選択したアイテムをスピナーに設定できません
ただし、mySpinner.setSelected(INDEX)
を使用していますが、選択した項目は表示されません。
私はsetOnItemSelectedListener
のコードを実行していません。
すでに多くの類似の質問があることを認識していますが、これらの回答をクロールしても問題を解決できませんでした。
私のコードは以下の通りです。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_add_man_data, container, false);
// Create the variables
final FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference ref = database.getReference();
final ArrayList<String> statesForSpinner = new ArrayList<>();
final TextView txtView = v.findViewById(R.id.add_man_data_txtview_1);
// Retrieve the database data (This bit works fine)
ref.child("stateDescriptions").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int length = (int)dataSnapshot.getChildrenCount();
for(int i = 0;i<length;i++) {
statesForSpinner.add(dataSnapshot.child(Integer.toString(i)).getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
// Create the spinner (This also works)
final Spinner stateSpinner = v.findViewById(R.id.state_spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), R.layout.spinner_item, statesForSpinner);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
stateSpinner.setAdapter(adapter);
// But this does not work... Why?
stateSpinner.setSelection(1);
// And this never runs... Why?
stateSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> adapter, View v, int position, long id){
stateSpinner.setSelection(position);
}
@Override
public void onNothingSelected(AdapterView<?> blah){
}
});
return v;
}
の子を取得する必要があると思いますちょうどOnItemSelectedListener? –
@KyleHigginsonそれはフラグメントなので、ビューを提供する必要があります。 –
@Kyleそれは同じことです。 1つは、それを修飾する親クラスがあります –