I want to retrieve my firebase data into a card list, but not showing anything.
public class GroupAdp extends RecyclerView.Adapter<GroupAdp.ViewHolder> {
//Initialize activities and array list
private Activity activity;
ArrayList<String> arrayListGroup;
//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);
}
//Initialize member adapter
MemberAdp 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);
}
}
}
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);
}
}
}
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
arrayListGroup = new ArrayList<>();
// for (int i= 1; i<=6; i++){
// arrayListGroup.add("Group " + i);
// }
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Course_ID_Section");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Map<String, Object> map = (Map<String, Object>) snapshot.getValue();
Log.e("LOG_TAG", "Value is:" + map);
assert map != null;
for (Map.Entry<String, Object> entry : map.entrySet()) {
Log.e("The Result", entry.getKey() + "/" + entry.getValue());
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String UID = user.getUid();
if (UID.equals(entry.getValue())) {
arrayListGroup.add("Class" + entry.getValue());
}
}
}
@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;
}
}
I want the Group name to be the Course_ID_Section, for example, CSCI-110-MO1. Only if the value inside of this key(CSCI-110-MO1) is the same as the firebase UID. Otherwise, perform no action.
Currently, I am dealing with this kind output:
E/LOG_TAG: Value is:{CSCI-110-M01={BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}, CSCI-415-M01={BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}, CSCI-455-M03={BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}, CSCI-300-M02={BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}, CSCI-318-M01={BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}}
E/The Result: CSCI-110-M01/{BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}
E/The Result: CSCI-415-M01/{BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}
CSCI-455-M03/{BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}
CSCI-300-M02/{BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}
CSCI-318-M01/{BiazGfcXiBYKUUGk4NGwXjJ5C7k2=***********, nGrAfIS6NgbBlkmSPUA0zm4qwQb2=***********}
Not sure if it is the "=" causing me the problem. Only want to compare firebase UID in this case.