UserTasksPublishedFragment (полный):
public class UserTasksPublishedFragment extends Fragment implements AvailableTaskListAdapter.OnAvailableTaskListener, CurrentUserTaskListAdapter.OnMyTaskPublishedListener, CurrentUserTaskListAdapter.OnMyTaskAssignedListener, CurrentUserTaskListAdapter.OnOtherTaskAssignedToMeListener {
private static final String TAG = "UserTasksList";
private FirebaseFirestore mFirestore;
private RadioGroup radioGroup;
private RadioButton checkedRadioButton;
private RecyclerView rvAvailableTasks;
private AvailableTaskListAdapter availableTaskListAdapter;
private CurrentUserTaskListAdapter currentUserTaskListAdapter;
private List<Task> tasksList, currentUserTasksList;
private List<String> idTaskList, idCurrentUserTaskList;
private int numberOfTasksAssignedToCurUser;
private String currentLoggedUser;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_user_tasks_list, container, false);
radioGroup = (RadioGroup) view.findViewById(R.id.radioGroup);
checkedRadioButton = (RadioButton) radioGroup.findViewById(radioGroup.getCheckedRadioButtonId());
setHasOptionsMenu(true);
mFirestore = FirebaseFirestore.getInstance();
currentLoggedUser = SaveSharedPreference.getEmail(getActivity().getApplicationContext());
idTaskList = new ArrayList<>();
tasksList = new ArrayList<>();
currentUserTasksList = new ArrayList<>();
idCurrentUserTaskList = new ArrayList<>();
currentUserTaskListAdapter = new CurrentUserTaskListAdapter(currentUserTasksList, idCurrentUserTaskList, getActivity(), getContext(), this, this, this, mFirestore, this);
rvAvailableTasks = (RecyclerView) view.findViewById(R.id.rvTasks);
rvAvailableTasks.addItemDecoration(new DividerItemDecoration(getContext(),
DividerItemDecoration.VERTICAL));
rvAvailableTasks.setHasFixedSize(true);
rvAvailableTasks.setLayoutManager(new LinearLayoutManager(getActivity()));
populateTasksAvailableList();
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// This puts the value (true/false) into the variable
boolean isChecked = checkedRadioButton.isChecked();
// If the radiobutton that has changed in check state is now checked...
if (isChecked) {
rvAvailableTasks.setAdapter(availableTaskListAdapter);
availableTaskListAdapter.notifyDataSetChanged();
} else {
rvAvailableTasks.setAdapter(currentUserTaskListAdapter);
currentUserTaskListAdapter.notifyDataSetChanged();
}
}
});
return view;
}
private void populateTasksAvailableList() {
numberOfTasksAssignedToCurUser = 0;
Log.d(TAG, "Save shared user name: " + SaveSharedPreference.getEmail(getActivity().getApplicationContext()));
mFirestore.collection("listedTasks").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@javax.annotation.Nullable QuerySnapshot documentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.d(TAG, "Error: " + e.getMessage());
return;
}
for (DocumentSnapshot doc : documentSnapshots) {
Task task = doc.toObject(Task.class);
if (!task.getUser().equals(currentLoggedUser) && task.getAssignedTo().equals(currentLoggedUser))
numberOfTasksAssignedToCurUser++;
if (task.getUser().equals(currentLoggedUser) || task.getAssignedTo().equals(currentLoggedUser)) {
currentUserTasksList.add(task);
idCurrentUserTaskList.add(doc.getId());
} else {
if (!isTaskExpired(task) && task.getAssignedTo().isEmpty()) {
tasksList.add(task);
idTaskList.add(doc.getId());
}
}
}
sortTaskListChronological(currentUserTasksList);
availableTaskListAdapter = new AvailableTaskListAdapter(tasksList, idTaskList, getActivity(), mFirestore, UserTasksPublishedFragment.this, numberOfTasksAssignedToCurUser, UserTasksPublishedFragment.this);
availableTaskListAdapter.notifyDataSetChanged();
currentUserTaskListAdapter = new CurrentUserTaskListAdapter(currentUserTasksList, idCurrentUserTaskList, getActivity(), getContext(), UserTasksPublishedFragment.this, UserTasksPublishedFragment.this, UserTasksPublishedFragment.this, mFirestore, UserTasksPublishedFragment.this);
rvAvailableTasks.setAdapter(availableTaskListAdapter);
Log.d(TAG, "numberOfTasksAssignedToCurUser " + numberOfTasksAssignedToCurUser);
}
});
Log.d(TAG, "numberOfTasksAssignedToCurUser " + numberOfTasksAssignedToCurUser);
}
private boolean isTaskExpired(Task task) {
Calendar curentTime = new java.util.GregorianCalendar();
Calendar taskTime = new java.util.GregorianCalendar();
taskTime.setTime(task.getStartDateTime());
return curentTime.after(taskTime);
}
private void sortTaskListChronological(List<Task> mList) {
if (mList.size() > 1)
Collections.sort(mList, new Comparator<Task>() {
@Override
public int compare(Task o1, Task o2) {
return o1.getStartDateTime().compareTo(o2.getStartDateTime());
}
});
}
@Override
public void onTaskClicked(int position) {
}
@Override
public void onMyTaskAssignedClicked(int position) {
}
@Override
public void onMyTaskPublishedClicked(int position) {
}
@Override
public void onOtherTaskAssignedToMeClicked(int position) {
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_bar, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setQueryHint("Cauta locatii");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
availableTaskListAdapter.getFilter().filter(newText);
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public void onDestroyOptionsMenu() {
setHasOptionsMenu(false);
}
}