【发布时间】:2020-07-17 16:26:27
【问题描述】:
所以我尝试从 Firebase RecycleView 中获取价格值并将其相加得到总和。但我不知道它是如何工作的
这是我的适配器
public class StatusAdapter extends RecyclerView.Adapter<StatusAdapter.ViewHolder> {
private ArrayList<Status> listStatus;
private Context context;
String uid;
public interface dataListener{
void onDeleteData(Status data, int position);
}
dataListener listener;
public StatusAdapter(ArrayList<Status> listStatus, Context context) {
this.listStatus = listStatus;
this.context = context;
listener = (ProsesPesananActivity)context;
}
class ViewHolder extends RecyclerView.ViewHolder{
private TextView shopId, ukuran, total,status,image,cartTotal;
private ImageView imageView;
private LinearLayout ListItem;
long sum;
ViewHolder(View itemView) {
super(itemView);
//Menginisialisasi View-View yang terpasang pada layout RecyclerView kita
shopId = itemView.findViewById(R.id.itemKey);
ukuran = itemView.findViewById(R.id.itemUkuran);
total = itemView.findViewById(R.id.itemTotal);
status = itemView.findViewById(R.id.itemStatus);
ListItem = itemView.findViewById(R.id.list_item);
imageView = itemView.findViewById(R.id.RecStatusImage);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//Membuat View untuk Menyiapkan dan Memasang Layout yang Akan digunakan pada RecyclerView
View V = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_status, parent, false);
return new ViewHolder(V);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") final int position) {
//Mengambil Nilai/Value yenag terdapat pada RecyclerView berdasarkan Posisi Tertentu
final String shopId = listStatus.get(position).getShopId();
final String ukuran = listStatus.get(position).getUkuran();
final String status = String.valueOf(listStatus.get(position).getStatus());
final String total = String.valueOf(listStatus.get(position).getTotal());
final String image = listStatus.get(position).getUrl();
//Memasukan Nilai/Value kedalam View (TextView: shopId, ukuran, total)
holder.shopId.setText("shopId: "+shopId);
holder.ukuran.setText("ukuran: "+ukuran);
holder.total.setText("total: "+total);
holder.status.setText("status"+status);
}
private int grandTotal(ArrayList<Status> items){
int totalPrice = 0;
for(int i = 0 ; i < items.size(); i++) {
totalPrice += items.get(i).getTotal();
}
return totalPrice;
}
@Override
public int getItemCount() {
//Menghitung Ukuran/Jumlah Data Yang Akan Ditampilkan Pada RecyclerView
return listStatus.size();
}
}
如您所见,我尝试将它与 totalPrice 方法相加,但是当我在 mainActivity 中调用此方法时它不起作用,因为它需要是静态方法,如果我使用静态方法,我无法获得任何数组。那么有什么办法可以实现吗?
【问题讨论】:
-
创建一个可以通过实例调用的方法,并在调用notifydatasetchanged后立即通过实例调用。
-
你能告诉我如何实现它吗?我是新来的。对不起
-
一般情况下不能直接调用其他类的方法。但是,我对此有一个建议是创建一个返回 int 值的接口,当您完全获得总数时,您将在其中传递 grandTotal 值。因此,在 mainActivity.java 文件中实现您的接口方法。如需更多帮助,请告诉我。
-
先生,您可以通过侦听器在主要活动中发送数据,您已经在 recyclerview 适配器中使用了 deleteData() 。与此相同,您可以在其中添加一个函数来传递项目总数,并在主活动中实现该接口以获取回调。
标签: java android firebase-realtime-database android-recyclerview