Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RecyclerView不在片段中显示项,但在活动中工作_Java_Android_Android Fragments_Android Recyclerview_Android Adapter - Fatal编程技术网

Java RecyclerView不在片段中显示项,但在活动中工作

Java RecyclerView不在片段中显示项,但在活动中工作,java,android,android-fragments,android-recyclerview,android-adapter,Java,Android,Android Fragments,Android Recyclerview,Android Adapter,免责声明:在搜索了整个StackOverflow之后,我还没有找到解决方案 我以前曾在另一个活动中成功地使用过RecyclerView,因此我将该代码移植到一个片段中。我不知道为什么这些物品没有出现在RecyclerView中。调试后,Fragment\u\u Activities类似乎没有调用ActivitiesAdapter方法,例如onBindViewHolder()和onCreateViewHolder() Fragment\u即将到来的活动。java: private Fire

免责声明:在搜索了整个StackOverflow之后,我还没有找到解决方案
我以前曾在另一个活动中成功地使用过RecyclerView,因此我将该代码移植到一个片段中。我不知道为什么这些物品没有出现在RecyclerView中。调试后,Fragment\u\u Activities类似乎没有调用ActivitiesAdapter方法,例如onBindViewHolder()和onCreateViewHolder()

Fragment\u即将到来的活动。java:

    private FirebaseAuth fAuth;
    private FirebaseFirestore fStore;
    private FirebaseUser mFirebaseUser;
    private RecyclerView mFirestoreList;
    private String currentUid;
    private CollectionReference catRef;
    private List<String> list_category = new ArrayList();
    private ArrayAdapter<String> adapter_category;
    private Spinner spCategories;
    private ActivitiesAdapter adapter;
    private View view;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container, @NonNull Bundle savedInstanceState) {
        fAuth = FirebaseAuth.getInstance();
        mFirebaseUser = fAuth.getCurrentUser();
        fStore = FirebaseFirestore.getInstance();
        currentUid = mFirebaseUser.getUid();
        return inflater.inflate(R.layout.fragment_upcoming_activity, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        spCategories = view.findViewById(R.id.category_spinner);
        mFirestoreList = view.findViewById(R.id.upcoming_act_recycleView);
        //setUpCategoriesSpinner();
        setupRecyclerView();
    }




    public void setUpCategoriesSpinner(){

        //Department spinner population
        catRef = fStore.collection("parent_categories");
        list_category = new ArrayList<>();
        adapter_category = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, list_category);
        adapter_category.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spCategories.setAdapter(adapter_category);
        spCategories.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String selected = (String) parent.getSelectedItem();
                displayUserData(selected);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        catRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        String categoryName = document.getString("category_name");
                        list_category.add(categoryName);
                    }
                    adapter_category.notifyDataSetChanged();
                }
            }
        });


    }

    public void displayUserData(String selected){
        System.out.println("Selected category: "  + selected);
        Query query;

        if (selected.equals("All Categories")) {
            System.out.println("ALL");
            query = fStore.collection("activities").whereEqualTo("act_purpose", "All");
        } else {
            System.out.println("OTHER");
            String sub = selected.substring(selected.length() - 1);
            System.out.println(sub);
            int catNo = Integer.parseInt(sub);
            query = fStore.collection("activities").whereEqualTo("act_purpose", "All").whereGreaterThan("act_category_number", sub).whereLessThan("act_category_number", sub).orderBy("act_category_number", Query.Direction.DESCENDING).orderBy("start_date", Query.Direction.DESCENDING);
        }

        //RecyclerOptions
        FirestoreRecyclerOptions<ActivitiesModel> options = new FirestoreRecyclerOptions.Builder<ActivitiesModel>()
                .setQuery(query, ActivitiesModel.class)
                .build();

        //View Holder
        adapter.updateOptions(options);
    }



    private void setupRecyclerView(){

        Query query = fStore.collection("activities");

        //RecyclerOptions
        FirestoreRecyclerOptions<ActivitiesModel> options = new FirestoreRecyclerOptions.Builder<ActivitiesModel>()
                .setQuery(query, ActivitiesModel.class)
                .build();

        //View Holder
        adapter = new ActivitiesAdapter(options);

        mFirestoreList.setLayoutManager(new LinearLayoutManager(getContext()));
        mFirestoreList.setAdapter(adapter);

        adapter.setOnItemClickListener(new ActivitiesAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(DocumentSnapshot documentSnapshot, int position) {

            }
        });
    }

    private ActivitiesAdapter.OnItemClickListener listener;

    public ActivitiesAdapter(@NonNull FirestoreRecyclerOptions<ActivitiesModel> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull ActivitiesAdapter.ActivitiesHolder holder, int position, @NonNull ActivitiesModel model) {

        String temp = model.getStart_date().toString().trim();
        String[] temparray = temp.split(" ");
        String startMonth = temparray[1];
        String startDate = temparray[2];
        String startYear = temparray[5];
        String act_title = model.getAct_title();
        String act_catName = model.getAct_category_name();
        String pdHoursAndPoints = model.getPoints()  + " Points  · " + model.getHours() + " Hours";

        holder.actTitle.setText(act_title);
        holder.startDate.setText(startDate + "\n" + startMonth + "\n" + startYear);
        holder.actCategory.setText(act_catName);
        holder.actPointsAndHours.setText(pdHoursAndPoints);

    }

    @NonNull
    @Override
    public ActivitiesAdapter.ActivitiesHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_actlog,
                parent, false);
        return new ActivitiesAdapter.ActivitiesHolder(v);
    }

    class ActivitiesHolder extends RecyclerView.ViewHolder {
        private TextView startDate, actTitle, actCategory, actPointsAndHours;

        public ActivitiesHolder(View itemView) {
            super(itemView);

            startDate = itemView.findViewById(R.id.textview_startdate);
            actTitle = itemView.findViewById(R.id.textview_act_title);
            actCategory = itemView.findViewById(R.id.textview_act_category);
            actPointsAndHours = itemView.findViewById(R.id.textview_pointsandhours_act);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = getAdapterPosition();
                    if(position != RecyclerView.NO_POSITION && listener != null){
                        listener.onItemClick(getSnapshots().getSnapshot(position),position);
                        //insert intent for edit here
                    }
                }
            });
        }
    }


    public interface OnItemClickListener{
        void onItemClick(DocumentSnapshot documentSnapshot, int position);
    }

    public void  setOnItemClickListener(ActivitiesAdapter.OnItemClickListener listener){
        this.listener = listener;

    }
私有FirebaseAuth fAuth;
私人FirebaseFirestore商店;
私有FirebaseUser mFirebaseUser;
私人RecyclerView mFirestoreList;
私有字符串currentUid;
私人收藏参考catRef;
private List_category=new ArrayList();
专用阵列适配器_类;
私有微调器类别;
私有活动适配器;
私人视野;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@NonNull ViewGroup container、@NonNull Bundle savedInstanceState){
fAuth=FirebaseAuth.getInstance();
mFirebaseUser=fAuth.getCurrentUser();
fStore=FirebaseFirestore.getInstance();
currentUid=mFirebaseUser.getUid();
返回充气机。充气(R.layout.fragment\u即将进行的\u活动,容器,错误);
}
@凌驾
已创建视图上的公共void(视图,@Nullable Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
spCategories=view.findviewbyd(R.id.categories\u微调器);
mFirestoreList=view.findViewById(R.id.coming\u act\u recycleView);
//setupCategoriesPinner();
setupRecyclerView();
}
public void setupCategoriesPinner(){
//部门微调器总体
catRef=fStore.collection(“父类别”);
list_category=new ArrayList();
adapter\u category=new ArrayAdapter(getActivity(),android.R.layout.simple\u微调器\u项,列表\u类别);
adapter\u category.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
spCategories.setAdapter(适配器\ U类);
spCategories.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
所选字符串=(字符串)父级。getSelectedItem();
显示用户数据(选中);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
catRef.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
String categoryName=document.getString(“category_name”);
列表\类别。添加(类别名称);
}
适配器_category.notifyDataSetChanged();
}
}
});
}
public void displayUserData(已选择字符串){
System.out.println(“所选类别:+所选类别”);
查询;
如果(选定。等于(“所有类别”)){
系统输出打印项次(“全部”);
query=fStore.collection(“活动”)。其中equalto(“行为目的”、“全部”);
}否则{
系统输出打印项次(“其他”);
String sub=selected.substring(selected.length()-1);
系统输出打印项次(sub);
int catNo=Integer.parseInt(sub);
query=fStore.collection(“activities”).whereEqualTo(“act\u purpose”、“All”).wheregreether(“act\u category\u number”,sub).whereLessThan(“act\u category\u number”,sub).orderBy(“act\u category\u number”,query.Direction.DESCENDING”).orderBy(“开始日期”,query.Direction.DESCENDING”);
}
//回收选项
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,ActivitiesModel.class)
.build();
//视图持有者
adapter.updateOptions(选项);
}
私有void setupRecyclerView(){
Query=fStore.collection(“活动”);
//回收选项
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,ActivitiesModel.class)
.build();
//视图持有者
适配器=新活动适配器(选项);
setLayoutManager(新的LinearLayoutManager(getContext());
mFirestoreList.setAdapter(适配器);
setOnItemClickListener(新活动adapter.OnItemClickListener(){
@凌驾
public void onItemClick(DocumentSnapshot DocumentSnapshot,int位置){
}
});
}
ActivitiesAdapter.java:

    private FirebaseAuth fAuth;
    private FirebaseFirestore fStore;
    private FirebaseUser mFirebaseUser;
    private RecyclerView mFirestoreList;
    private String currentUid;
    private CollectionReference catRef;
    private List<String> list_category = new ArrayList();
    private ArrayAdapter<String> adapter_category;
    private Spinner spCategories;
    private ActivitiesAdapter adapter;
    private View view;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container, @NonNull Bundle savedInstanceState) {
        fAuth = FirebaseAuth.getInstance();
        mFirebaseUser = fAuth.getCurrentUser();
        fStore = FirebaseFirestore.getInstance();
        currentUid = mFirebaseUser.getUid();
        return inflater.inflate(R.layout.fragment_upcoming_activity, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        spCategories = view.findViewById(R.id.category_spinner);
        mFirestoreList = view.findViewById(R.id.upcoming_act_recycleView);
        //setUpCategoriesSpinner();
        setupRecyclerView();
    }




    public void setUpCategoriesSpinner(){

        //Department spinner population
        catRef = fStore.collection("parent_categories");
        list_category = new ArrayList<>();
        adapter_category = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, list_category);
        adapter_category.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spCategories.setAdapter(adapter_category);
        spCategories.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String selected = (String) parent.getSelectedItem();
                displayUserData(selected);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        catRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        String categoryName = document.getString("category_name");
                        list_category.add(categoryName);
                    }
                    adapter_category.notifyDataSetChanged();
                }
            }
        });


    }

    public void displayUserData(String selected){
        System.out.println("Selected category: "  + selected);
        Query query;

        if (selected.equals("All Categories")) {
            System.out.println("ALL");
            query = fStore.collection("activities").whereEqualTo("act_purpose", "All");
        } else {
            System.out.println("OTHER");
            String sub = selected.substring(selected.length() - 1);
            System.out.println(sub);
            int catNo = Integer.parseInt(sub);
            query = fStore.collection("activities").whereEqualTo("act_purpose", "All").whereGreaterThan("act_category_number", sub).whereLessThan("act_category_number", sub).orderBy("act_category_number", Query.Direction.DESCENDING).orderBy("start_date", Query.Direction.DESCENDING);
        }

        //RecyclerOptions
        FirestoreRecyclerOptions<ActivitiesModel> options = new FirestoreRecyclerOptions.Builder<ActivitiesModel>()
                .setQuery(query, ActivitiesModel.class)
                .build();

        //View Holder
        adapter.updateOptions(options);
    }



    private void setupRecyclerView(){

        Query query = fStore.collection("activities");

        //RecyclerOptions
        FirestoreRecyclerOptions<ActivitiesModel> options = new FirestoreRecyclerOptions.Builder<ActivitiesModel>()
                .setQuery(query, ActivitiesModel.class)
                .build();

        //View Holder
        adapter = new ActivitiesAdapter(options);

        mFirestoreList.setLayoutManager(new LinearLayoutManager(getContext()));
        mFirestoreList.setAdapter(adapter);

        adapter.setOnItemClickListener(new ActivitiesAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(DocumentSnapshot documentSnapshot, int position) {

            }
        });
    }

    private ActivitiesAdapter.OnItemClickListener listener;

    public ActivitiesAdapter(@NonNull FirestoreRecyclerOptions<ActivitiesModel> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull ActivitiesAdapter.ActivitiesHolder holder, int position, @NonNull ActivitiesModel model) {

        String temp = model.getStart_date().toString().trim();
        String[] temparray = temp.split(" ");
        String startMonth = temparray[1];
        String startDate = temparray[2];
        String startYear = temparray[5];
        String act_title = model.getAct_title();
        String act_catName = model.getAct_category_name();
        String pdHoursAndPoints = model.getPoints()  + " Points  · " + model.getHours() + " Hours";

        holder.actTitle.setText(act_title);
        holder.startDate.setText(startDate + "\n" + startMonth + "\n" + startYear);
        holder.actCategory.setText(act_catName);
        holder.actPointsAndHours.setText(pdHoursAndPoints);

    }

    @NonNull
    @Override
    public ActivitiesAdapter.ActivitiesHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_actlog,
                parent, false);
        return new ActivitiesAdapter.ActivitiesHolder(v);
    }

    class ActivitiesHolder extends RecyclerView.ViewHolder {
        private TextView startDate, actTitle, actCategory, actPointsAndHours;

        public ActivitiesHolder(View itemView) {
            super(itemView);

            startDate = itemView.findViewById(R.id.textview_startdate);
            actTitle = itemView.findViewById(R.id.textview_act_title);
            actCategory = itemView.findViewById(R.id.textview_act_category);
            actPointsAndHours = itemView.findViewById(R.id.textview_pointsandhours_act);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = getAdapterPosition();
                    if(position != RecyclerView.NO_POSITION && listener != null){
                        listener.onItemClick(getSnapshots().getSnapshot(position),position);
                        //insert intent for edit here
                    }
                }
            });
        }
    }


    public interface OnItemClickListener{
        void onItemClick(DocumentSnapshot documentSnapshot, int position);
    }

    public void  setOnItemClickListener(ActivitiesAdapter.OnItemClickListener listener){
        this.listener = listener;

    }

private Activities Adapter.OnItemClickListener侦听器;
公共活动适配器(@NonNull FirestoreRecyclerOptions选项){
超级(期权);
}
@凌驾
BindViewHolder上受保护的无效(@NonNull ActivitiesAdapter.ActivitiesHolder holder,int位置,@NonNull ActivitiesModel模型){
字符串temp=model.getStart_date().toString().trim();
字符串[]temparray=temp.split(“”);
字符串startMonth=temparray[1];
字符串startDate=temparray[2];
字符串startYear=temparray[5];
字符串act_title=model.getAct_title();
字符串act_catName=model.getAct_category_name();
字符串pdHoursAndPoints=model.getPoints()+“Points·”+model.getHours()+“Hours”;
持有人.actTitle.setText(法案标题);
holder.startDate.setText(startDate+“\n”+startMonth+“\n”+startYear);
holder.actCategory.setText(act_catName);
holder.ac