Skip to content

Commit

Permalink
Добавлен подсчет количества крови и количества сдач
Browse files Browse the repository at this point in the history
 - RecyclerViewParamAdapter.java: double -> float, elementsNumber -> numberOfItemsInOneRow;
 - DashboardActivity.java: Тестовые надписи заменены на вызов соответствующего метода (из Database.java);
 - Database.java: добавлены методы getTotalVolumeDonations и getTotalDeliveries, userID -> userFirebaseID в методе setDonation;
 - AuthHelloActivity.java: Одноименный класс больше не абстрактный, добавлена возможность перехода к предыдущему фрагменту;
 - recycler_view_param_item.xml: Небольшие изменения визуальной части;
Добавлены файлы анимации для возврата предыдущего фрагмента (slide_in_left.xml, slide_out_right.xml)
  • Loading branch information
gleb7499 committed Dec 15, 2024
1 parent b6e6c19 commit 4c079a8
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,17 @@ public paramViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewTyp

@Override
public int getItemCount() {
return (int) Math.ceil((double) list.size() / paramViewHolder.elementsNumber);
return (int) Math.ceil((float) list.size() / paramViewHolder.numberOfItemsInOneRow);
}

@Override
public void onBindViewHolder(@NonNull paramViewHolder holder, int position) {
holder.textView_1.setText(list.get(position * paramViewHolder.elementsNumber).getValue());
holder.imageView_1.setImageResource(list.get(position * paramViewHolder.elementsNumber).getImage());
holder.textView_1.setText(list.get(position * paramViewHolder.numberOfItemsInOneRow).getValue());
holder.imageView_1.setImageResource(list.get(position * paramViewHolder.numberOfItemsInOneRow).getImage());

if (position * paramViewHolder.elementsNumber + 1 < list.size()) {
holder.textView_2.setText(list.get(position * paramViewHolder.elementsNumber + 1).getValue());
holder.imageView_2.setImageResource(list.get(position * paramViewHolder.elementsNumber + 1).getImage());
if (position * paramViewHolder.numberOfItemsInOneRow + 1 < list.size()) {
holder.textView_2.setText(list.get(position * paramViewHolder.numberOfItemsInOneRow + 1).getValue());
holder.imageView_2.setImageResource(list.get(position * paramViewHolder.numberOfItemsInOneRow + 1).getImage());
} else {
holder.cardView_2.setVisibility(View.GONE);
}
Expand All @@ -58,7 +58,7 @@ public static final class paramViewHolder extends RecyclerView.ViewHolder {
private final ImageView imageView_1;
private final ImageView imageView_2;
private final CardView cardView_2;
private static final int elementsNumber = 2;
private static final int numberOfItemsInOneRow = 2;

public paramViewHolder(View view) {
super(view);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public class DashboardActivity extends AppCompatActivity {
private Button buttonLogOut;
private Database database;
private ActivityResultLauncher<Intent> launcherForAuthActivity;
private String userFirebaseID;

boolean isFirstForLayoutPerson = true;
boolean isFirstForButtonAdd = true;
Expand All @@ -65,6 +66,8 @@ protected void onCreate(Bundle savedInstanceState) {

database = DatabaseManager.getDatabase();

userFirebaseID = FirebaseAuth.getInstance().getCurrentUser().getUid();

launcherForAuthActivity = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
});

Expand Down Expand Up @@ -121,8 +124,8 @@ protected void onCreate(Bundle savedInstanceState) {
recyclerView.setLayoutManager(new LinearLayoutManager(DashboardActivity.this, LinearLayoutManager.VERTICAL, false));

recyclerViewModels = new ArrayList<>();
recyclerViewModels.add(new RecyclerViewModel("Общее количество крови", R.drawable.donation));
recyclerViewModels.add(new RecyclerViewModel("Количество сдач", R.drawable.score));
recyclerViewModels.add(new RecyclerViewModel(database.getTotalVolumeDonations(userFirebaseID), R.drawable.donation));
recyclerViewModels.add(new RecyclerViewModel(database.getTotalDeliveries(userFirebaseID), R.drawable.score));
recyclerViewModels.add(new RecyclerViewModel("История", R.drawable.history));

RecyclerViewParamAdapter adapter = new RecyclerViewParamAdapter(DashboardActivity.this, recyclerViewModels);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,12 @@ public Database(Context context) {
}

public void close() {
db.close();
dbHelper.close();
if (db != null) {
db.close();
}
if (dbHelper != null) {
dbHelper.close();
}
}

public void setUser(Users user) {
Expand Down Expand Up @@ -66,13 +70,31 @@ public String getDonationTypeID(String donationType) {
return cursor.getString(0);
}

public String getTotalVolumeDonations(String userFirebaseID) {
Cursor cursor = db.rawQuery("SELECT SUM(quantity) FROM Donations WHERE userFirebaseID = ?", new String[]{userFirebaseID});
if (cursor.moveToFirst()) {
return cursor.getFloat(0) / 1000 + " л";
}
cursor.close();
return "---";
}

public String getTotalDeliveries(String userFirebaseID) {
Cursor cursor = db.rawQuery("SELECT COUNT(*) FROM Donations WHERE userFirebaseID = ?", new String[]{userFirebaseID});
if (cursor.moveToFirst()) {
return cursor.getInt(0) + " раз";
}
cursor.close();
return "-";
}

public boolean setDonation(Donations donation) {
if (existsDonation(donation.getDonationDate(), donation.getUserFirebaseID())) {
return false;
}
ContentValues values = new ContentValues();

values.put("userID", donation.getUserFirebaseID());
values.put("userFirebaseID", donation.getUserFirebaseID());
values.put("donationDate", donation.getDonationDate());
values.put("donationTypeID", donation.getDonationTypeID());
values.put("quantity", donation.getQuantity());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import android.widget.ProgressBar;

import androidx.activity.EdgeToEdge;
import androidx.activity.OnBackPressedCallback;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
Expand Down Expand Up @@ -36,7 +37,7 @@
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;

public abstract class AuthHelloActivity extends FragmentActivity {
public class AuthHelloActivity extends FragmentActivity {
private FloatingActionButton nextButton;
private ProgressBar progressBar;
private FirebaseAuth mAuth;
Expand Down Expand Up @@ -95,6 +96,16 @@ protected void onCreate(Bundle savedInstanceState) {
return WindowInsetsCompat.CONSUMED;
});

getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (counterFragments > 0) {
counterFragments--;
getSupportFragmentManager().popBackStack();
}
}
});

mAuth = FirebaseAuth.getInstance();

nextButton.setOnClickListener(v -> nextButtonClick());
Expand Down Expand Up @@ -154,7 +165,12 @@ protected void addFragmentsInList(boolean isHelloFragment) {
}

private void nextFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left).replace(R.id.Frame, fragment).commit();
getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
.replace(R.id.Frame, fragment)
.addToBackStack(null)
.commit();
}

private void loginUser() {
Expand Down
7 changes: 7 additions & 0 deletions LifeLine/app/src/main/res/anim/slide_in_left.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<translate
android:fromXDelta="-100%p"
android:toXDelta="0"
android:duration="500"/>
</set>
7 changes: 7 additions & 0 deletions LifeLine/app/src/main/res/anim/slide_out_right.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<translate
android:fromXDelta="0"
android:toXDelta="100%p"
android:duration="500"/>
</set>
8 changes: 4 additions & 4 deletions LifeLine/app/src/main/res/layout/recycler_view_param_item.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginEnd="5dp"
android:layout_marginBottom="10dp"
android:layout_marginEnd="7.5dp"
android:layout_marginBottom="15dp"
android:layout_weight="0.5"
android:background="@android:color/transparent"
app:cardCornerRadius="30dp"
Expand Down Expand Up @@ -51,8 +51,8 @@
android:id="@+id/cardView_2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginBottom="10dp"
android:layout_marginStart="7.5dp"
android:layout_marginBottom="15dp"
android:layout_weight="0.5"
android:background="@android:color/transparent"
app:cardCornerRadius="30dp"
Expand Down

0 comments on commit 4c079a8

Please sign in to comment.