【发布时间】:2021-05-12 20:05:44
【问题描述】:
我对 Android Studio 完全陌生。 我为预算创建了recycleview。我为每个项目创建了预算描述和预算值。 我试图总结recyclerview的所有价值。我一夜之间尝试了不同的方法,但没有成功。请帮忙!!!
适配器:
package com.example.personalwallet.Adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
import com.example.personalwallet.Model.Budget;
import com.example.personalwallet.R;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.ArrayList;
public class recyclerAdapter extends RecyclerView.Adapter<recyclerAdapter.MyViewHolder> {
private ArrayList<Budget> userlist;
private DatabaseReference databaseReference;
private String uId;
int sum=0;
public recyclerAdapter(ArrayList<Budget> userlist,String uId){
this.userlist=userlist;
this.uId = uId;
databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(uId).child("Budget");
}
public class MyViewHolder extends RecyclerView.ViewHolder{
private TextView nameTxt,amountTXT;
CardView rootCardView;
ImageView deleteSupplierIV;
public MyViewHolder(final View view){
super(view);
nameTxt = view.findViewById(R.id.name);
amountTXT = view.findViewById(R.id.value);
rootCardView = itemView.findViewById(R.id.single_supplier_cardview_id);
deleteSupplierIV = itemView.findViewById(R.id.delete_supplier_IV);
}
}
@NonNull
@Override
public recyclerAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemview = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_items,parent,false);
return new MyViewHolder(itemview);
}
@Override
public void onBindViewHolder(@NonNull recyclerAdapter.MyViewHolder holder, int position) {
Budget user = userlist.get(position);
String name,amount;
name = user.getBudgetDescription();
amount = user.getAmount();
holder.nameTxt.setText(name);
holder.amountTXT.setText(amount);
if (user.isVisibilityStatus()){
holder.deleteSupplierIV.setVisibility(View.GONE);
}
holder.rootCardView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
holder.deleteSupplierIV.setVisibility(View.VISIBLE);
user.setVisibilityStatus(false);
return true;
}
});
holder.deleteSupplierIV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteSupplier(user.getBudgetDescription());
}
private void deleteSupplier(String supplierName) {
DatabaseReference productReference = databaseReference.child(supplierName);
productReference.removeValue();
userlist.remove(position);
notifyItemRemoved(position);
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return userlist.size();
}
}
活动代码:
package com.example.personalwallet.NavCategories;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.personalwallet.Adapter.recyclerAdapter;
import com.example.personalwallet.AddBudgetActivity;
import com.example.personalwallet.Model.Budget;
import com.example.personalwallet.Prevalent.Prevalent;
import com.example.personalwallet.R;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
public class Budgets extends AppCompatActivity{
private FloatingActionButton addNewBudgetFAB;
private ArrayList<Budget> userlist;
private RecyclerView recyclerView;
private String uId;
DatabaseReference databaseReference;
recyclerAdapter adapter;
TextView TotalBudgetTv;
public int total_budget =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_budgets);
userlist = new ArrayList<Budget>();
recyclerView = findViewById(R.id.suppliers_recyclerViewID);
TotalBudgetTv = findViewById(R.id.TotalBudgetTv);
uId = Prevalent.currentOnlineUser.getPhone();
adapter = new recyclerAdapter(userlist,uId);
setUserInfo();
setAdapter();
**for (int i=0; i<userlist.size(); i++){
total_budget = total_budget+Integer.parseInt(userlist.get(i).getAmount());
}**
TotalBudgetTv.setText("Total Budget: " + Integer.toString(total_budget));
addNewBudgetFAB = findViewById(R.id.addNewSuppliersFABID);
addNewBudgetFAB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Budgets.this, AddBudgetActivity.class);
startActivity(intent);
}
});
}
private void setAdapter() {
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
}
private void setUserInfo() {
databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(uId).child("Budget");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
userlist.clear();
if (snapshot.exists()) {
for (DataSnapshot data : snapshot.getChildren()) {
Budget supplier = data.getValue(Budget.class);
userlist.add(supplier);
adapter.notifyDataSetChanged();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
这是我的模型类:
package com.example.personalwallet.Model;
public class Budget {
private String BudgetDescription;
private String amount;
public boolean isVisibilityStatus() {
return visibilityStatus;
}
public void setVisibilityStatus(boolean visibilityStatus) {
this.visibilityStatus = visibilityStatus;
}
private boolean visibilityStatus = true;
public Budget(){}
public Budget(String budgetDescription, String amount) {
BudgetDescription = budgetDescription;
this.amount = amount;
}
public String getBudgetDescription() {
return BudgetDescription;
}
public void setBudgetDescription(String budgetDescription) {
BudgetDescription = budgetDescription;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
}
【问题讨论】:
标签: java android-studio android-layout arraylist android-recyclerview