From ddda285f41f12bf6d8c46aa11a3f577dd0b8e502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20S=C3=A1nchez?= Date: Tue, 17 Dec 2024 16:46:16 -0300 Subject: [PATCH] no recyclerview --- .../ui/exchanges/BinanceFragment.java | 38 ++----- .../exchanges/adapters/WorkerCardAdapter.java | 104 ++++++++---------- app/src/main/res/layout/fragment_binance.xml | 22 ++-- app/src/main/res/layout/worker_card.xml | 4 +- 4 files changed, 68 insertions(+), 100 deletions(-) diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java index fdc89d3..3344972 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java @@ -1,3 +1,4 @@ +// BinanceFragment.java package com.example.dcav2gui.ui.exchanges; import android.os.Bundle; @@ -7,51 +8,34 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import com.example.dcav2gui.R; import com.example.dcav2gui.databinding.FragmentBinanceBinding; import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; +import com.example.dcav2gui.ui.exchanges.WorkerData; -import java.util.ArrayList; +import java.io.IOException; import java.util.List; public class BinanceFragment extends Fragment { private FragmentBinanceBinding binding; - private WorkerCardAdapter adapter; + private BinanceViewModel binanceViewModel; + private WorkerCardAdapter workerCardAdapter; + @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - BinanceViewModel binanceViewModel = - new ViewModelProvider(this).get(BinanceViewModel.class); - binding = FragmentBinanceBinding.inflate(inflater, container, false); View root = binding.getRoot(); - RecyclerView recyclerView = binding.recyclerView; - recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + binanceViewModel = new ViewModelProvider(this).get(BinanceViewModel.class); - adapter = new WorkerCardAdapter(new ArrayList<>()); + workerCardAdapter = new WorkerCardAdapter(binding.binanceCardsContainer); - //adapter = new WorkerCardAdapter(binanceViewModel.getWorkerData().getValue() != null ? binanceViewModel.getWorkerData().getValue() : new ArrayList<>()); - recyclerView.setAdapter(adapter); - //binanceViewModel.getWorkerData().observe(getViewLifecycleOwner(), adapter::updateData); - binanceViewModel.getWorkerData().observe(getViewLifecycleOwner(), newData -> { - if (adapter == null) { - adapter = new WorkerCardAdapter(newData); - recyclerView.setAdapter(adapter); - } else { - adapter.updateData(newData); - } + binanceViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> { + workerCardAdapter.updateData(workerDataList); }); + return root; } - - @Override - public void onDestroyView() { - super.onDestroyView(); - binding = null; - } } \ No newline at end of file diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/adapters/WorkerCardAdapter.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/adapters/WorkerCardAdapter.java index 4dfc864..5b8594f 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/adapters/WorkerCardAdapter.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/adapters/WorkerCardAdapter.java @@ -18,82 +18,81 @@ import java.util.Locale; import java.util.concurrent.TimeUnit; -public class WorkerCardAdapter extends RecyclerView.Adapter { +public class WorkerCardAdapter{ - private List workerDataList; + private LinearLayout container; - public WorkerCardAdapter(List workerDataList) { - this.workerDataList = workerDataList; + public WorkerCardAdapter(LinearLayout container) { + this.container = container; } - @NonNull - @Override - public WorkerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.worker_card, parent, false); - return new WorkerViewHolder(view); + public void updateData(List workerDataList) { + container.removeAllViews(); // Clear existing views + for (WorkerData worker : workerDataList) { + addCard(worker); + } } - @Override - public void onBindViewHolder(@NonNull WorkerViewHolder holder, int position) { + private void addCard(WorkerData worker) { //TODO: progress bar color + View view = LayoutInflater.from(container.getContext()).inflate(R.layout.worker_card, container, false); + TextView pair = view.findViewById(R.id.workerCardPair); + TextView safetyOrders = view.findViewById(R.id.workerCardSafetyOrders); + TextView uptime = view.findViewById(R.id.workerCardUptime); + TextView nextSoPrice = view.findViewById(R.id.workerCardNextSoPrice); + TextView price = view.findViewById(R.id.workerCardCurrentPrice); + TextView takeProfitPrice = view.findViewById(R.id.workerCardTakeProfitPrice); + TextView percentage = view.findViewById(R.id.workerCardPercentageToDeal); + ProgressBar progressBar = view.findViewById(R.id.workerCardProgressBar); + TextView workerStatusString = view.findViewById(R.id.workerCardStatusString); + ImageView workerCardIcon = view.findViewById(R.id.workerCardIcon); + LinearLayout cardLayout = view.findViewById(R.id.workerCard); - WorkerData worker = workerDataList.get(position); - holder.pair.setText(worker.getPair()); + if (pair == null || safetyOrders == null || uptime == null || nextSoPrice == null || + price == null || takeProfitPrice == null || percentage == null || progressBar == null || + workerStatusString == null || workerCardIcon == null || cardLayout == null) { + System.out.println("One or more views are null"); + return; + } + + pair.setText(worker.getPair()); if (worker.isShort()) { - holder.pair.setTextColor(Color.parseColor("#FFA500")); + pair.setTextColor(Color.parseColor("#FFA500")); } else { //Cyan - holder.pair.setTextColor(Color.parseColor("#008B8B")); + pair.setTextColor(Color.parseColor("#008B8B")); } - holder.price.setText(String.format(Locale.ROOT, "%.8f", worker.getPrice())); - holder.nextSoPrice.setText(String.format(Locale.ROOT, "%.8f", worker.getNextSoPrice())); - holder.takeProfitPrice.setText(String.format(Locale.ROOT, "%.8f", worker.getTakeProfitPrice())); + price.setText(String.format(Locale.ROOT, "%.8f", worker.getPrice())); + nextSoPrice.setText(String.format(Locale.ROOT, "%.8f", worker.getNextSoPrice())); + takeProfitPrice.setText(String.format(Locale.ROOT, "%.8f", worker.getTakeProfitPrice())); - String percentage = String.format(Locale.ROOT, "%.2f",abs(worker.getTakeProfitPrice()- worker.getPrice())/worker.getPrice()*100)+"%"; - holder.percentage.setText(percentage); + String percentageToDisplay = String.format(Locale.ROOT, "%.2f",abs(worker.getTakeProfitPrice()- worker.getPrice())/worker.getPrice()*100)+"%"; + percentage.setText(percentageToDisplay); - String safetyOrders = worker.getAmountOfSafetyOrders()-1 + " / " + worker.getMaxSafetyOrders(); - holder.safetyOrders.setText(safetyOrders); + String safetyOrdersToDisplay = worker.getAmountOfSafetyOrders()-1 + " / " + worker.getMaxSafetyOrders(); + safetyOrders.setText(safetyOrdersToDisplay); - holder.uptime.setText(formatSeconds(worker.getUptime())); + uptime.setText(formatSeconds(worker.getUptime())); double progressBarPercentage = (worker.getPrice()-worker.getNextSoPrice())/(worker.getTakeProfitPrice()-worker.getNextSoPrice()); - holder.progressBar.setProgress((int) (progressBarPercentage * 100)); + progressBar.setProgress((int) (progressBarPercentage * 100)); double breakEven = worker.getTotalAmountOfQuote()/worker.getTotalAmountOfBase(); if (worker.isBoosted()) { - holder.workerCardIcon.setVisibility(View.VISIBLE); + workerCardIcon.setVisibility(View.VISIBLE); } else { - holder.workerCardIcon.setVisibility(View.INVISIBLE); + workerCardIcon.setVisibility(View.INVISIBLE); } if (worker.getStopWhenProfit()) { - holder.workerStatusString.setText("LAST DEAL"); + workerStatusString.setText("LAST DEAL"); } else if (worker.isPaused()) { - holder.cardLayout.setBackgroundColor(Color.parseColor("#C5C281")); + cardLayout.setBackgroundColor(Color.parseColor("#C5C281")); } else if (worker.isAuto()) { - holder.workerStatusString.setText("AUTO"); + workerStatusString.setText("AUTO"); } else { - holder.workerStatusString.setText(""); + workerStatusString.setText(""); } - System.err.println(worker.getPair()); - System.err.println(workerDataList.size()); - System.err.println(workerDataList.get(0).getPair()); - System.err.println(workerDataList.get(20).getPair()); -// int color; -// if (worker.getNextSoPrice()< worker.getTakeProfitPrice()) { -// if (worker.getPrice()>=breakEven){ -// color = Color.GREEN; -// } else { -// color = Color.RED; -// } -// } else { -// if (worker.getPrice() newData) { - workerDataList = newData; - notifyDataSetChanged(); - } public static class WorkerViewHolder extends RecyclerView.ViewHolder { TextView pair; diff --git a/app/src/main/res/layout/fragment_binance.xml b/app/src/main/res/layout/fragment_binance.xml index a1e9ff3..93bd7a2 100644 --- a/app/src/main/res/layout/fragment_binance.xml +++ b/app/src/main/res/layout/fragment_binance.xml @@ -1,19 +1,13 @@ - + android:layout_height="wrap_content" + android:orientation="vertical" + android:background="#FF0000" + android:visibility="visible"> - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/worker_card.xml b/app/src/main/res/layout/worker_card.xml index 656031b..d26a85b 100644 --- a/app/src/main/res/layout/worker_card.xml +++ b/app/src/main/res/layout/worker_card.xml @@ -1,5 +1,5 @@ - @@ -115,4 +115,4 @@ android:progressDrawable="@drawable/worker_progress_bar"/> - \ No newline at end of file + \ No newline at end of file