Skeleton EarnerCardAdapter

This commit is contained in:
Nicolás Sánchez 2025-03-10 12:07:21 -03:00
parent 48e2eaa125
commit 8bc3fe4cfc
2 changed files with 96 additions and 1 deletions

View File

@ -1,4 +1,99 @@
package com.example.dcav2gui.ui.earners; package com.example.dcav2gui.ui.earners;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.example.dcav2gui.InstanceInterface;
import com.example.dcav2gui.R;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
public class EarnerCardAdapter { public class EarnerCardAdapter {
private final ViewGroup container;
public EarnerCardAdapter(ViewGroup container) {
this.container = container;
}
public void updateData(List<EarnerData> earnerDataList) {
container.removeAllViews(); // Clear existing views
for (EarnerData earner : earnerDataList) {
View cardView = LayoutInflater.from(container.getContext()).inflate(R.layout.earner_card, container, false);
addCard(earner, cardView);
container.addView(cardView);
}
}
public interface OnCardLongClickListener {
void onCardLongClick(String pair, View v);
}
private EarnerCardAdapter.OnCardLongClickListener onCardLongClickListener;
public void setOnCardLongClickListener(EarnerCardAdapter.OnCardLongClickListener listener) {
this.onCardLongClickListener = listener;
}
private void addCard(EarnerData earner, View view) {
TextView broker = view.findViewById(R.id.earnerCardExchange);
TextView tradingBalance = view.findViewById(R.id.earnerCardTradingBalanceValue);
TextView earningBalance = view.findViewById(R.id.earnerCardEarningBalanceValue);
TextView percentage = view.findViewById(R.id.earnerCardPercentage);
TextView lastSubscription = view.findViewById(R.id.earnerCardLastSubscriptionDateTime);
TextView lastRedemption = view.findViewById(R.id.earnerCardLastRedemptionDateTime);
LinearLayout cardLayout = view.findViewById(R.id.earnerCard);
if (broker == null || tradingBalance == null || earningBalance == null || lastSubscription == null ||
lastRedemption == null || percentage == null ||cardLayout == null) {
System.out.println("One or more views are null");
return;
}
/*
* Fill the data fields with the earner's values
*/
cardLayout.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (onCardLongClickListener != null) {
onCardLongClickListener.onCardLongClick(earner.getBrokerName(), v);
}
return true;
}
});
}
public static String formatSeconds(double seconds) {
long days = TimeUnit.SECONDS.toDays((long) seconds);
long hours = TimeUnit.SECONDS.toHours((long) seconds) % 24;
long minutes = TimeUnit.SECONDS.toMinutes((long) seconds) % 60;
long secs = (long) (seconds % 60);
return String.format(Locale.ROOT,"%03d:%02d:%02d:%02d", days, hours, minutes, secs);
}
//Refactor for earners' status bar
public static void populateStatusBar(TextView statusBar, InstanceInterface.ExchangeStatsData exchangeData) {
int amountOfWorkers = exchangeData.getOnlineWorkers();
//double lastSeen = exchangeData.getLastSeen();
int longWorkers = exchangeData.getLongWorkers();
int shortWorkers = exchangeData.getShortWorkers();
int safetyOrdersSent = exchangeData.getSafetyOrdersSent();
int maxSafetyOrders = exchangeData.getMaxSafetyOrders();
String percentage = String.format(Locale.ROOT, "%.2f", (double) safetyOrdersSent/maxSafetyOrders*100);
String statusBarText = amountOfWorkers + " traders online (" + longWorkers + "/" + shortWorkers + ") - Occupancy " + percentage + "%";
statusBar.setText(statusBarText);
}
} }

View File

@ -7,7 +7,7 @@
android:clickable="true" android:clickable="true"
android:longClickable="true"> android:longClickable="true">
<LinearLayout <LinearLayout
android:id="@+id/EarnerCard" android:id="@+id/earnerCard"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="60dp" android:layout_height="60dp"
android:orientation="vertical" android:orientation="vertical"