Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 所有内容都返回到一个列表中_Java_Firebase_Android Studio - Fatal编程技术网

Java 所有内容都返回到一个列表中

Java 所有内容都返回到一个列表中,java,firebase,android-studio,Java,Firebase,Android Studio,我目前遇到一个问题,即所有内容都返回到同一个列表。我知道这是因为我将所有内容添加到同一个数组中。但如何将它们添加到特定的位置,如我的firebase中的位置 public class GroupAdp extends RecyclerView.Adapter<GroupAdp.ViewHolder> { //Initialize activities and array list private Activity activity; ArrayList<

我目前遇到一个问题,即所有内容都返回到同一个列表。我知道这是因为我将所有内容添加到同一个数组中。但如何将它们添加到特定的位置,如我的firebase中的位置

public class GroupAdp extends RecyclerView.Adapter<GroupAdp.ViewHolder> {
    //Initialize activities and array list
    private Activity activity;
    ArrayList<String> arrayListGroup;
    MemberAdp adapterMember;
    //Create constructor
    GroupAdp(Activity activity,ArrayList<String> arrayListGroup){
        this.activity = activity;
        this.arrayListGroup = arrayListGroup;
//        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_row_group,parent,false);
        return new GroupAdp.ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        //Set group name on TextView
        holder.tvName.setText(arrayListGroup.get(position));

        //Initialize member ArrayList
        ArrayList<String> arrayListMember = new ArrayList<>();

        //Using for loop to add multiple members
//        for (int i=1; i<=6; i++){
//            arrayListMember.add("Member " + i);
//        }

        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Course_ID_Section");

        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                String UID = user.getUid();

                for (DataSnapshot courseSnapshot: snapshot.getChildren()) {
                    for (DataSnapshot userSnapshot: courseSnapshot.getChildren()) {
//                        arrayListMember.add(userSnapshot.getValue(String.class));
                        if(UID.equals(userSnapshot.getKey())) {
                            arrayListMember.add(userSnapshot.getValue(String.class));
                        }

                    }
                }
                adapterMember.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });

        //Initialize member adapter
        adapterMember = new MemberAdp(arrayListMember);

        //Initialize layout manager
        LinearLayoutManager layoutManagerMember = new LinearLayoutManager(activity);

        //Set layout manager
        holder.rvMember.setLayoutManager(layoutManagerMember);

        //Set adapter
        holder.rvMember.setAdapter(adapterMember);
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        //Initialize variable
        TextView tvName;
        RecyclerView rvMember;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            //Assign variable
            tvName = itemView.findViewById(R.id.tv_name);
            rvMember = itemView.findViewById(R.id.rv_member);
        }
    }
}
公共类GroupAdp扩展了RecyclerView.Adapter{
//初始化活动和数组列表
私人活动;
ArrayList ArrayList组;
成员ADP适配器成员;
//创建构造函数
GroupAdp(活动活动,ArrayList ArrayList组){
这个。活动=活动;
this.arrayListGroup=arrayListGroup;
//notifyDataSetChanged();
}
@非空
@凌驾
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){
View=LayoutInflater.from(parent.getContext())
.充气(右布局列表行组,父级,假);
返回新的组ADP.ViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int位置){
//在TextView上设置组名
holder.tvName.setText(arrayListGroup.get(position));
//初始化成员ArrayList
ArrayList arrayListMember=新的ArrayList();
//使用for循环添加多个成员

//对于(int i=1;i问题是您订阅了数据的根
课程ID\u部分
,因此您以相同的方式获取所有数据,而不考虑其课程ID。有几种方法可以处理它,但在您的情况下,我建议如下:

将学生存储在哈希表(或另一个关联数组实现)或新的
课程
类中,而不是存储在同一数组
arrayListMember
中。然后,在行
arrayListMember.add(userSnapshot.getValue(String.class))中循环课程时,填写新的数据结构
,因为此时您有一个关于学生的数据,
courseSnapshot
可以获取课程名称

public class HealthAlertActivity2 extends Fragment {

    //Initialize variable
    RecyclerView rvGroup;
    ArrayList<String> arrayListGroup;
    LinearLayoutManager layoutManagerGroup;
    GroupAdp adapterGroup;

    //@Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View healthAlertFragment = inflater.inflate(R.layout.healthalert_activity2, container, false);


        //Assign variable
        rvGroup = healthAlertFragment.findViewById(R.id.rv_group);

        //Using for loop to add multiple group
        //Used for dummy display for now

//        for (int i= 1; i<=6; i++){
//            arrayListGroup.add("Group " + i);
//        }


        ArrayList<String> arrayListGroup = new ArrayList<>();

        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Course_ID_Section");

        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {


                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                String UID = user.getUid();

                Map<String, Object> map = (Map<String, Object>) snapshot.getValue();
                Log.e("LOG_TAG", "Value:" + map);

                assert map != null;
                for (Map.Entry<String, Object> entry : map.entrySet()) {
                    Log.e("The Result", entry.getKey());

                    arrayListGroup.add(entry.getKey());

                }
                adapterGroup.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                Log.e("LOG_TAG", "Failed to read value.", error.toException());
            }
        });


        //Initialize group adapter
        adapterGroup = new GroupAdp(getActivity(), arrayListGroup);

        //Initialize layout manager
        layoutManagerGroup = new LinearLayoutManager(getActivity());

        //Set layout manager
        rvGroup.setLayoutManager(layoutManagerGroup);

        //Set adapter
        rvGroup.setAdapter(adapterGroup);
        return healthAlertFragment;
    }
}
public class MemberAdp extends RecyclerView.Adapter<MemberAdp.ViewHolder> {
    //Initialize ArrayList
    ArrayList<String> arrayListMember;

    //Create constructor
    public MemberAdp(ArrayList<String> arrayListMember) {
        this.arrayListMember = arrayListMember;

    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        //Initialize view
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_row_member,parent,false);
        return new MemberAdp.ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        //Set member name on TextView
        holder.tvName.setText(arrayListMember.get(position));
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        //Initialize variable
        TextView tvName;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            //Assign variable
            tvName = itemView.findViewById(R.id.tv_name);
        }
    }
}