I'm trying to populate a spinner but for some reason I'm getting an error when trying to pass through my list of objects. Can some take a look please:
code:
public class AddFacultyFragment extends Fragment {
@BindView(R.id.spinner_search_UniFac)
Spinner spinner_search_UniFac;
ArrayList<University> list = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add_faculty,
container,
false);
ButterKnife.bind(this, view);
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference docRef = db.collection("university");
docRef.get().addOnCompleteListener((OnCompleteListener<QuerySnapshot>) task -> {
if (task.isSuccessful()) {
for(DocumentSnapshot a : task.getResult()){
University u = new University();
u.setID(a.getId());
u.setDesc(a.get("Desc").toString());
list.add(u);
}
}
});
ArrayAdapter<University> spinnerArrayAdapter = new ArrayAdapter<University>
(this, android.R.layout.simple_spinner_item,
list);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
.simple_spinner_dropdown_item);
spinner_search_UniFac.setAdapter(spinnerArrayAdapter);
return view;
}
public AddFacultyFragment() {
// Required empty public constructor
}
}
Thank you in advance. This is the error
error: no suitable constructor found for ArrayAdapter(AddFacultyFragment,int,List) constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable (argument mismatch; AddFacultyFragment cannot be converted to Context) constructor ArrayAdapter.ArrayAdapter(Context,int,String[]) is not applicable (argument mismatch; AddFacultyFragment cannot be converted to Context) constructor ArrayAdapter.ArrayAdapter(Context,int,List) is not applicable (argument mismatch; AddFacultyFragment cannot be converted to Context)
I think all you missing is the correct context. You cannot use this
on a fragment, you have to use getContext()
then it should work. Like this:
public class AddFacultyFragment extends Fragment {
@BindView(R.id.spinner_search_UniFac)
Spinner spinner_search_UniFac;
ArrayList<University> list = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add_faculty,
container,
false);
ButterKnife.bind(this, view);
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference docRef = db.collection("university");
docRef.get().addOnCompleteListener((OnCompleteListener<QuerySnapshot>) task -> {
if (task.isSuccessful()) {
for(DocumentSnapshot a : task.getResult()){
University u = new University();
u.setID(a.getId());
u.setDesc(a.get("Desc").toString());
list.add(u);
}
}
});
ArrayAdapter<University> spinnerArrayAdapter = new ArrayAdapter<University>
(getContext(), android.R.layout.simple_spinner_item,
list);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
.simple_spinner_dropdown_item);
spinner_search_UniFac.setAdapter(spinnerArrayAdapter);
return view;
}
public AddFacultyFragment() {
// Required empty public constructor
}
}