recyclerview, установите переменную в 0 - PullRequest
0 голосов
/ 16 июня 2020

Метод clearAmount в OrderActivity устанавливает Arraylist orderlist в 0. calcultatePrice, а также countItems также должны быть 0. На данный момент текст calculatePrice и countItems устанавливается на 0 через setText, но это только визуализирует 0 на экране. Сама переменная не равна 0 после setText.

Как я могу сделать так, чтобы две переменные были установлены в 0?

OrderAcitivity


public class OrderActivity extends AppCompatActivity implements OrderAdapter.TotalListener {

    private OrderAdapter adapter;
    private RecyclerView recyclerView;
    private ArrayList<ModelOrder> orderArrayList;
    private TextView textView_order_price, textView_order_count;
    private Dialog epicDialog;
    private Button btnCheckout, btnAbort, btnPaymentAcceptedOK;


    // Nfc stuff
    private NfcAdapter nfcAdapter;
    private PendingIntent pendingIntent;
    private IntentFilter writeTagFilters[];
    private boolean writeMode, nfcEnabled = false;
    private Tag myTag;
    private Context context;
    private String nfcUserID;
    private double amount, currentAccountBalance;

    interface RetrievalEventListener<T> {
        abstract void onDataRetrieved(T t);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order);

        recyclerView = findViewById(R.id.recyclerview_order_scroll);
        textView_order_price = findViewById(R.id.textView_order_price);
        textView_order_count = findViewById(R.id.textView_order_count);
        btnCheckout = (Button) findViewById(R.id.btnCheckout);



        orderArrayList = new ArrayList<>();
        //orderArrayList.add(new ModelOrder(R.drawable.coke, "Coka Cola", "Eine Cola hält dich wach und schmeckt dazu.", "3",0));
        addArticle(this);
        orderArrayList.add(new ModelOrder(R.drawable.fastfood, "Pommes", "Die besten Pommes aus Kartoffeln.", "5",0));
        orderArrayList.add(new ModelOrder(R.drawable.water, "Wasser", "Still und sanft, so mag ich es.", "5",0));
        orderArrayList.add(new ModelOrder(R.drawable.burger, "Burger", "Brot, Salat, Fleisch und Gurken", "10",0));
        orderArrayList.add(new ModelOrder(R.drawable.drink, "Smoothi", "Pürierte Früchte.", "7",0));
        //orderArrayList.add(new ModelOrder(R.drawable.coke, "Burger", "Ach mir fällt nichts ein.", "10",0));

        adapter = new OrderAdapter(this, orderArrayList);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        RecyclerView.LayoutManager recLiLayoutManager = layoutManager;

        recyclerView.setLayoutManager(recLiLayoutManager);



        recyclerView.setAdapter(adapter);

        epicDialog = new Dialog(this);


    }



    /**
     * Will clear all counters and the amount
     */
    private void clearAmount() {
        // Set all orders count to 0
        for (ModelOrder modelOrder: orderArrayList) {
            modelOrder.setCounter(0);
        }

        // Notify RecyclerView about the changes
        adapter.notifyDataSetChanged();

        // the value is not really 0
        //NumberFormat n = NumberFormat.getCurrencyInstance(Locale.GERMANY);
        //textView_order_price.setText( n.format(0));
        //textView_order_count.setText(0 + "");

    }






OrderAdapter




public class OrderAdapter extends RecyclerView.Adapter<OrderAdapter.ViewHolder> {

    private int totalAmount;
    private int totalItems;
    private Context mContext;
    private ArrayList<ModelOrder> nList;

    private TotalListener listener;

    interface TotalListener{
        void onTotalChanged(String result);
        void onCountChanged(String result);

    }
    OrderAdapter(Context context, ArrayList<ModelOrder> list) {
        mContext = context;
        nList = list;
        this.listener = (TotalListener) context;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater layoutInflater = LayoutInflater.from(mContext);
        View view = layoutInflater.inflate(R.layout.recyclerview_order_items, parent, false);

        ViewHolder viewHolder = new ViewHolder(view);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {

        final ModelOrder orderItem = nList.get(position);
        ImageView image = holder.item_image;
        final TextView name, place, price;
        name = holder.item_name;
        place = holder.item_place;
        price = holder.item_price;

        image.setImageResource(orderItem.getImage());

        name.setText(orderItem.getName());
        place.setText(orderItem.getPlace());
        price.setText(orderItem.getPrice());

        holder.order_item_count.setText(String.valueOf(orderItem.getCounter()));


        holder.order_item_minus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(orderItem.getCounter() > 0) {
                    orderItem.setCounter(orderItem.getCounter()-1);
                    holder.order_item_count.setText("" + orderItem.getCounter());
                    calculatePrice(Integer.parseInt((String) price.getText()), false);
                    countItems(orderItem.getCounter(), false);

                }

            }
        });

        holder.order_item_plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(orderItem.getCounter() < 9) {
                    orderItem.setCounter(orderItem.getCounter() + 1);
                    holder.order_item_count.setText("" + orderItem.getCounter());
                    calculatePrice(Integer.parseInt((String) price.getText()), true);
                    countItems(orderItem.getCounter(), true);
                }
            }
        });




    }

    public int getTotalPrice() {
        return totalAmount;
    }

    @Override
    public int getItemCount() {
        return nList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        ImageView item_image;
        TextView item_name, item_place, item_price,order_item_minus,order_item_count, order_item_plus;

        public ViewHolder(@NonNull View itemView) {

            super(itemView);
            item_image = itemView.findViewById(R.id.order_item_image);
            item_name = itemView.findViewById(R.id.order_item_name);
            item_place = itemView.findViewById(R.id.order_item_place);
            item_price = itemView.findViewById(R.id.order_item_price);
            order_item_minus = itemView.findViewById(R.id.order_item_minus);
            order_item_plus = itemView.findViewById(R.id.order_item_plus);
            order_item_count = itemView.findViewById(R.id.order_item_count);
        }
    }

    private void calculatePrice(int pPrice, boolean pUpDown) {
        if(pUpDown) {
            totalAmount = totalAmount + pPrice;
        }
        else {
            totalAmount = totalAmount - pPrice;
        }

        listener.onTotalChanged(totalAmount+ "");
    }

    private void countItems(int pCounter, boolean pUpDown){
        if (pUpDown){
            totalItems = totalItems + 1;
        }
        else{
            totalItems = totalItems - 1;
        }
        listener.onCountChanged(totalItems+ "");

    }


}

1 Ответ

1 голос
/ 16 июня 2020

Вы должны написать следующее в OrderActivity:

private void clearAmount() {

// Set all orders count to 0
    for (ModelOrder modelOrder: orderArrayList) {
        modelOrder.setCounter(0);

    }

    adapter.setTotalAmount(0);
    adapter.setTotalItems(0);
    NumberFormat n = NumberFormat.getCurrencyInstance(Locale.GERMANY);
    textView_order_price.setText( n.format(0));
    textView_order_count.setText(0 + "");
    adapter.notifyDataSetChanged();

}

А затем в OrderAdapter:

public void setTotalAmount(int i) {
        totalAmount = i;
    }

    public void setTotalItems(int i) {
        totalItems = i;
    } 

Вам нужны последние два метода в OrderAdapter, чтобы изменить значение переменной, а затем вы вызываете функции в clearAmount() с нулем в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...