Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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 Firestore数据未显示在表格布局的RecyclerView中_Java_Google Cloud Firestore_Android Recyclerview_Android Tablayout - Fatal编程技术网

Java Firestore数据未显示在表格布局的RecyclerView中

Java Firestore数据未显示在表格布局的RecyclerView中,java,google-cloud-firestore,android-recyclerview,android-tablayout,Java,Google Cloud Firestore,Android Recyclerview,Android Tablayout,我在一张表格里有两个碎片。数据不能在RecyclerView中显示,但数量正确,我可以在logcat中显示数据,但不能在RecyclerView中显示 Fragment_users.java public class Fragment_users extends Fragment { private static final String TAG = "Fragment_users"; @Nullable @Override public V

我在一张表格里有两个碎片。数据不能在RecyclerView中显示,但数量正确,我可以在logcat中显示数据,但不能在RecyclerView中显示

Fragment_users.java

public class Fragment_users extends Fragment {
    private static final String TAG = "Fragment_users";

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView=inflater.inflate(R.layout.fragment_users,container,false);
        dataModalArrayList = new ArrayList<>();
        db = FirebaseFirestore.getInstance();
        coursesLV = (RecyclerView) rootView.findViewById(R.id.usersRView);
        coursesLV.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.HORIZONTAL,false));

        loadDatainListview();
        return rootView;
    }

    RecyclerView coursesLV;
    ArrayList<users> dataModalArrayList;
    FirebaseFirestore db;
    ViewPager holder;

    private void loadDatainListview() {
        db.collection("users").whereEqualTo("isUser", true).get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                            for (QueryDocumentSnapshot document : task.getResult()) {
                                Log.d(TAG, document.getId() + " => " + document.getData());
                            }
                        } else {
                            Log.d(TAG, "Error getting documents: ", task.getException());
                        }
                    }
                })
                .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                    @Override
                    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                        if (!queryDocumentSnapshots.isEmpty()) {
                            List<DocumentSnapshot> list = queryDocumentSnapshots.getDocuments();
                            for (DocumentSnapshot d : list) {
                                users dataModal = d.toObject(users.class);
                                dataModalArrayList.add(dataModal);
                            }
                            CustomAdapter adapter = new CustomAdapter(dataModalArrayList);
                            coursesLV.setAdapter(adapter);
                        } else {
                            Log.d(TAG, "No data found in Database");
                        }
                    }
                }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(getContext(), "Fail to load data.", Toast.LENGTH_SHORT).show();
                Log.d(TAG, "onFailure: Cannot load data. " + e.toString());
            }
        });
    }

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

        CustomAdapter adapter = new CustomAdapter(dataModalArrayList);
        RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.usersRView);
        LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);

    }
}
CustomAdapter.java

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyHolder> {
ArrayList<users> list = new ArrayList<>();
    CustomAdapter.ItemClickListener itemClickListener;

    public CustomAdapter(ArrayList<users> list) {
        this.list = list;
    }

    @NotNull
    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_addnewadmin,parent,false);

        return new MyHolder(view);
    }

    @Override
    public void onBindViewHolder(MyHolder holder, final int position) {

        final users userData = list.get(position);

        holder.listViewText.setText(userData.getFullName());
        Picasso.get().load(userData.getImgUrl()).into(holder.listViewImg);

        holder.upgradeUser.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                itemClickListener.OnItemClick(position,userData);
                notifyDataSetChanged();
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public interface ItemClickListener {

        void OnItemClick(int position,users userData);
    }

    public static class MyHolder extends RecyclerView.ViewHolder{

        TextView listViewText;
        ImageView listViewImg;
        Button upgradeUser;

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

            listViewText = itemView.findViewById(R.id.listViewText);
            listViewImg = itemView.findViewById(R.id.listViewImg);
            upgradeUser = itemView.findViewById(R.id.upgradeUser);
        }
    }

    public void setOnItemClickListener(ItemClickListener itemClickListener){
        this.itemClickListener = (CustomAdapter.ItemClickListener) itemClickListener;
    }

    public void UpdateData(int position,users userData){

        list.remove(position);
        list.add(userData);
        notifyItemChanged(position);
        notifyDataSetChanged();
    }
}
公共类CustomAdapter扩展了RecyclerView.Adapter{ ArrayList=新建ArrayList(); CustomAdapter.ItemClickListener ItemClickListener; 公共CustomAdapter(ArrayList列表){ this.list=列表; } @NotNull @凌驾 public MyHolder onCreateViewHolder(视图组父级,int-viewType){ View View=LayoutInflater.from(parent.getContext()).flate(R.layout.cardwiew\u addnewadmin,parent,false); 返回新的MyHolder(视图); } @凌驾 公共无效onBindViewHolder(MyHolder,最终整数位置){ 最终用户userData=list.get(位置); holder.listViewText.setText(userData.getFullName()); Picasso.get().load(userData.getImgUrl()).into(holder.listViewImg); holder.upgradeUser.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ itemClickListener.OnItemClick(位置、用户数据); notifyDataSetChanged(); } }); } @凌驾 public int getItemCount(){ 返回list.size(); } 公共接口项ClickListener{ void OnItemClick(int位置,用户userData); } 公共静态类MyHolder扩展了RecyclerView.ViewHolder{ 文本视图列表视图文本; 图像视图列表视图img; 按钮升级用户; 公共MyHolder(查看项目视图){ 超级(项目视图); listViewText=itemView.findViewById(R.id.listViewText); listViewImg=itemView.findViewById(R.id.listViewImg); upgradeUser=itemView.findViewById(R.id.upgradeUser); } } public void setOnItemClickListener(项ClickListener项ClickListener){ this.itemClickListener=(CustomAdapter.itemClickListener)itemClickListener; } public void UpdateData(int位置,用户userData){ 列表。删除(位置); 添加(用户数据); (职位)变更; notifyDataSetChanged(); } } 输出: 日志:

请帮我指出哪里错了。谢谢你的阅读。祝你今天愉快:)

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyHolder> {
ArrayList<users> list = new ArrayList<>();
    CustomAdapter.ItemClickListener itemClickListener;

    public CustomAdapter(ArrayList<users> list) {
        this.list = list;
    }

    @NotNull
    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_addnewadmin,parent,false);

        return new MyHolder(view);
    }

    @Override
    public void onBindViewHolder(MyHolder holder, final int position) {

        final users userData = list.get(position);

        holder.listViewText.setText(userData.getFullName());
        Picasso.get().load(userData.getImgUrl()).into(holder.listViewImg);

        holder.upgradeUser.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                itemClickListener.OnItemClick(position,userData);
                notifyDataSetChanged();
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public interface ItemClickListener {

        void OnItemClick(int position,users userData);
    }

    public static class MyHolder extends RecyclerView.ViewHolder{

        TextView listViewText;
        ImageView listViewImg;
        Button upgradeUser;

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

            listViewText = itemView.findViewById(R.id.listViewText);
            listViewImg = itemView.findViewById(R.id.listViewImg);
            upgradeUser = itemView.findViewById(R.id.upgradeUser);
        }
    }

    public void setOnItemClickListener(ItemClickListener itemClickListener){
        this.itemClickListener = (CustomAdapter.ItemClickListener) itemClickListener;
    }

    public void UpdateData(int position,users userData){

        list.remove(position);
        list.add(userData);
        notifyItemChanged(position);
        notifyDataSetChanged();
    }
}