Skip to content

Commit 27bd6e3

Browse files
committed
Completed participant list fragment
1 parent fad8c58 commit 27bd6e3

File tree

3 files changed

+203
-129
lines changed

3 files changed

+203
-129
lines changed
Lines changed: 63 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,63 @@
1-
//package it.unimib.pickapp.ui;
2-
//
3-
//import android.os.Bundle;
4-
//import android.view.LayoutInflater;
5-
//import android.view.View;
6-
//import android.view.ViewGroup;
7-
//
8-
//import androidx.annotation.NonNull;
9-
//import androidx.annotation.Nullable;
10-
//import androidx.fragment.app.Fragment;
11-
//import androidx.lifecycle.ViewModelProvider;
12-
//import androidx.navigation.NavController;
13-
//import androidx.navigation.fragment.NavHostFragment;
14-
//import androidx.recyclerview.widget.LinearLayoutManager;
15-
//import androidx.recyclerview.widget.RecyclerView;
16-
//
17-
//import com.firebase.ui.database.FirebaseRecyclerOptions;
18-
//import com.google.firebase.database.DatabaseReference;
19-
//import com.google.firebase.database.FirebaseDatabase;
20-
//
21-
//import it.unimib.pickapp.R;
22-
//
23-
//public class ParticipantListFragment extends Fragment {
24-
//
25-
// UserAdapter adapter; // Create Object of the Adapter class
26-
// private ParticipantListViewModel viewModel;
27-
//
28-
// public static ParticipantListFragment newInstance() {
29-
// return new ParticipantListFragment();
30-
// }
31-
//
32-
// @Override
33-
// public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
34-
// @Nullable Bundle savedInstanceState) {
35-
// View rootView = inflater.inflate(R.layout.participant_list_fragment, container, false);
36-
//
37-
// viewModel = new ViewModelProvider(requireActivity()).get(ParticipantListViewModel.class);
38-
//
39-
// RecyclerView recyclerView = rootView.findViewById(R.id.recycler);
40-
//
41-
// // To display the Recycler view linearly
42-
// recyclerView.setLayoutManager(
43-
// new LinearLayoutManager(requireContext()));
44-
//
45-
// adapter = new PlaceAdapter(options, itemClickListener);
46-
// // Connecting Adapter class with the Recycler view*/
47-
// recyclerView.setAdapter(adapter);
48-
//
49-
// return rootView;
50-
// }
51-
//
52-
// @Override
53-
// public void onActivityCreated(@Nullable Bundle savedInstanceState) {
54-
// super.onActivityCreated(savedInstanceState);
55-
// // TODO: Use the ViewModel
56-
// }
57-
//
58-
// @Override
59-
// public void onStart() {
60-
// super.onStart();
61-
// adapter.startListening();
62-
// }
63-
//
64-
// @Override
65-
// public void onStop() {
66-
// super.onStop();
67-
// adapter.stopListening();
68-
// }
69-
//}
1+
package it.unimib.pickapp.ui;
2+
3+
import android.os.Bundle;
4+
import android.view.LayoutInflater;
5+
import android.view.View;
6+
import android.view.ViewGroup;
7+
8+
import androidx.annotation.NonNull;
9+
import androidx.annotation.Nullable;
10+
import androidx.fragment.app.Fragment;
11+
import androidx.lifecycle.ViewModelProvider;
12+
import androidx.recyclerview.widget.LinearLayoutManager;
13+
import androidx.recyclerview.widget.RecyclerView;
14+
15+
import it.unimib.pickapp.R;
16+
17+
public class ParticipantListFragment extends Fragment {
18+
19+
UserAdapter adapter; // Create Object of the Adapter class
20+
private ParticipantListViewModel viewModel;
21+
22+
public static ParticipantListFragment newInstance() {
23+
return new ParticipantListFragment();
24+
}
25+
26+
@Override
27+
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
28+
@Nullable Bundle savedInstanceState) {
29+
View rootView = inflater.inflate(R.layout.participant_list_fragment, container, false);
30+
31+
viewModel = new ViewModelProvider(requireActivity()).get(ParticipantListViewModel.class);
32+
33+
RecyclerView recyclerView = rootView.findViewById(R.id.recycler);
34+
35+
// To display the Recycler view linearly
36+
recyclerView.setLayoutManager(
37+
new LinearLayoutManager(requireContext()));
38+
39+
adapter = new UserAdapter(viewModel.getUsers());
40+
viewModel.setAdapter(adapter);
41+
// Connecting Adapter class with the Recycler view*/
42+
recyclerView.setAdapter(adapter);
43+
viewModel.loadParticipants();
44+
45+
return rootView;
46+
}
47+
48+
@Override
49+
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
50+
super.onActivityCreated(savedInstanceState);
51+
// TODO: Use the ViewModel
52+
}
53+
54+
@Override
55+
public void onStart() {
56+
super.onStart();
57+
}
58+
59+
@Override
60+
public void onStop() {
61+
super.onStop();
62+
}
63+
}
Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,65 @@
11
package it.unimib.pickapp.ui;
22

3-
import androidx.lifecycle.LiveData;
4-
import androidx.lifecycle.MutableLiveData;
3+
import androidx.annotation.NonNull;
54
import androidx.lifecycle.ViewModel;
65

6+
import com.google.firebase.database.DataSnapshot;
7+
import com.google.firebase.database.DatabaseError;
78
import com.google.firebase.database.DatabaseReference;
89
import com.google.firebase.database.FirebaseDatabase;
10+
import com.google.firebase.database.ValueEventListener;
911

10-
import it.unimib.pickapp.model.Place;
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
15+
import it.unimib.pickapp.model.Match;
16+
import it.unimib.pickapp.model.User;
1117

1218
public class ParticipantListViewModel extends ViewModel {
13-
private final MutableLiveData<Place> selected;
14-
DatabaseReference userReference;
19+
private final DatabaseReference userReference;
20+
private Match match;
21+
private List<User> users;
22+
private UserAdapter adapter;
1523

1624
public ParticipantListViewModel() {
17-
selected = new MutableLiveData<Place>(null);
1825
userReference = FirebaseDatabase.getInstance().getReference("Users");
26+
users = new ArrayList<>();
27+
}
28+
29+
public void loadParticipants() {
30+
for (String userId : match.getParticipants().keySet()) {
31+
userReference.child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
32+
@Override
33+
public void onDataChange(@NonNull DataSnapshot snapshot) {
34+
users.add(snapshot.getValue(User.class));
35+
adapter.notifyItemChanged(users.size() - 1);
36+
}
37+
38+
@Override
39+
public void onCancelled(@NonNull DatabaseError error) {
40+
41+
}
42+
});
43+
}
1944
}
2045

21-
public LiveData<Place> getSelected() {
22-
return selected;
46+
public Match getMatch() {
47+
return match;
2348
}
2449

50+
public void setMatch(Match match) {
51+
this.match = match;
52+
}
2553

54+
public List<User> getUsers() {
55+
return users;
56+
}
57+
58+
public void setUsers(List<User> users) {
59+
this.users = users;
60+
}
61+
62+
public void setAdapter(UserAdapter adapter) {
63+
this.adapter = adapter;
64+
}
2665
}
Lines changed: 93 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,93 @@
1-
//package it.unimib.pickapp.ui;
2-
//
3-
//import androidx.recyclerview.widget.RecyclerView;
4-
//
5-
//public class UserAdapter extends RecyclerView.Adapter<UserAdapter.ViewHolder> {
6-
//
7-
// private User[] users;
8-
//
9-
// public static class ViewHolder extends RecyclerView.ViewHolder {
10-
// private final TextView textView;
11-
//
12-
// public ViewHolder(View view) {
13-
// super(view);
14-
// // Define click listener for the ViewHolder's View
15-
//
16-
// textView = (TextView) view.findViewById(R.id.textView);
17-
// }
18-
//
19-
// public TextView getTextView() {
20-
// return textView;
21-
// }
22-
// }
23-
//
24-
// public UserAdapter(User[] users) {
25-
// this.users = users;
26-
// }
27-
//
28-
// // Create new views (invoked by the layout manager)
29-
// @Override
30-
// public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
31-
// // Create a new view, which defines the UI of the list item
32-
// View view = LayoutInflater.from(viewGroup.getContext())
33-
// .inflate(R.layout.text_row_item, viewGroup, false);
34-
//
35-
// return new ViewHolder(view);
36-
// }
37-
//
38-
// // Replace the contents of a view (invoked by the layout manager)
39-
// @Override
40-
// public void onBindViewHolder(ViewHolder viewHolder, final int position) {
41-
//
42-
// // Get element from your dataset at this position and replace the
43-
// // contents of the view with that element
44-
// viewHolder.getTextView().setText(users[position]);
45-
// }
46-
//
47-
// // Return the size of your dataset (invoked by the layout manager)
48-
// @Override
49-
// public int getItemCount() {
50-
// return users.length;
51-
// }
52-
//}
1+
package it.unimib.pickapp.ui;
2+
3+
import android.annotation.SuppressLint;
4+
import android.view.LayoutInflater;
5+
import android.view.View;
6+
import android.view.ViewGroup;
7+
import android.widget.TextView;
8+
9+
import androidx.annotation.NonNull;
10+
import androidx.recyclerview.widget.RecyclerView;
11+
12+
import java.util.List;
13+
14+
import it.unimib.pickapp.R;
15+
import it.unimib.pickapp.model.User;
16+
17+
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.ViewHolder> {
18+
19+
private final List<User> users;
20+
21+
public UserAdapter(List<User> users) {
22+
this.users = users;
23+
}
24+
25+
// Create new views (invoked by the layout manager)
26+
@NonNull
27+
@Override
28+
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
29+
// Create a new view, which defines the UI of the list item
30+
View view = LayoutInflater.from(viewGroup.getContext())
31+
.inflate(R.layout.user_item_layout, viewGroup, false);
32+
33+
return new ViewHolder(view);
34+
}
35+
36+
// Replace the contents of a view (invoked by the layout manager)
37+
@SuppressLint("SetTextI18n")
38+
@Override
39+
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
40+
41+
// Get element from your dataset at this position and replace the
42+
// contents of the view with that element
43+
viewHolder.getFullName().setText(users.get(position).getFullname());
44+
viewHolder.getNickname().setText(users.get(position).getNickname());
45+
viewHolder.getEmail().setText(users.get(position).getEmail());
46+
viewHolder.getExperience().setText(Double.toString(users.get(position).getExperienceLevel()));
47+
viewHolder.getReliability().setText(Double.toString(users.get(position).getReliabilityLevel()));
48+
}
49+
50+
// Return the size of your dataset (invoked by the layout manager)
51+
@Override
52+
public int getItemCount() {
53+
return users.size();
54+
}
55+
56+
public static class ViewHolder extends RecyclerView.ViewHolder {
57+
private final TextView fullName;
58+
private final TextView nickname;
59+
private final TextView email;
60+
private final TextView experience;
61+
private final TextView reliability;
62+
63+
public ViewHolder(View view) {
64+
super(view);
65+
66+
fullName = (TextView) view.findViewById(R.id.name);
67+
nickname = (TextView) view.findViewById(R.id.nickname);
68+
email = (TextView) view.findViewById(R.id.email);
69+
experience = (TextView) view.findViewById(R.id.experience);
70+
reliability = (TextView) view.findViewById(R.id.reliability);
71+
}
72+
73+
public TextView getFullName() {
74+
return fullName;
75+
}
76+
77+
public TextView getNickname() {
78+
return nickname;
79+
}
80+
81+
public TextView getEmail() {
82+
return email;
83+
}
84+
85+
public TextView getExperience() {
86+
return experience;
87+
}
88+
89+
public TextView getReliability() {
90+
return reliability;
91+
}
92+
}
93+
}

0 commit comments

Comments
 (0)