首页 > 解决方案 > 检索数据后 Firestore Spinner 错误传递列表

问题描述

我正在尝试填充微调器,但由于某种原因,在尝试通过我的对象列表时出现错误。有人可以看看吗:

代码:

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
}

}

先感谢您。这是错误

错误:没有找到适合 ArrayAdapter(AddFacultyFragment,int,List) 构造函数 ArrayAdapter.ArrayAdapter(Context,int,int) 的构造函数不适用(参数不匹配;AddFacultyFragment 无法转换为 Context)构造函数 ArrayAdapter.ArrayAdapter(Context,int,String []) 不适用(参数不匹配;AddFacultyFragment 无法转换为 Context)构造函数 ArrayAdapter.ArrayAdapter(Context,int,List) 不适用(参数不匹配;AddFacultyFragment 无法转换为 Context)

标签: androidgoogle-cloud-firestoreandroid-spinner

解决方案


我认为您所缺少的只是正确的上下文。你不能this在片段上使用,你必须使用getContext()它才能工作。像这样:

公共类 AddFacultyFragment 扩展片段 {

@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
}

}

推荐阅读