Как рассчитать сумму элементов в RecyclerView? - PullRequest
0 голосов
/ 01 мая 2019

Я хочу рассчитать сумму всех предметов и отобразить их в тосте, как я могу их вычислить?

image

Это мой onBindViewHolder

    @Override
public void onBindViewHolder(@NonNull ViewHolder_chart viewHolder_chart, int i) {

    viewHolder_chart.p_name_CHART_tv.setText(_chartdata.get(i).getName_prdct()); // set name of product
    //Replace these two methods
    viewHolder_chart.p_price_CHART_tv.setText(_chartdata.get(i).getPrice_prdct());  // set quantity
    viewHolder_chart.p_quantity_Chart_tv.setText(_chartdata.get(i).getUnit_prdct());  // set price
    ////////////////////////////////
    viewHolder_chart.p_totalITem_CHART_tv.setText(_chartdata.get(i).getTotal_quantity());

    Log.d("Adapter_chart","bitmap="+_chartdata.get(i).getImage_prdct());
    viewHolder_chart.p_img_CHART.setImageBitmap(_chartdata.get(i).getImage_prdct());



    total += _chartdata.get(i).getPrice_prdct();

    if(i==_chartdata.size()-1){//check if list last element
        //show your total count view here---- and add total amount

        Toast.makeText(context, "t="+total, Toast.LENGTH_SHORT).show();
    }

}

1 Ответ

0 голосов
/ 01 мая 2019

Прежде всего удалите нижнюю строку из onBindViewHolder:

 total += _chartdata.get(i).getPrice_prdct();

, потому что onBindViewHolder будет вызывать каждый раз, когда вы прокручиваете, и пытается восстановить позицию с помощью представления, поэтому мы не можем делать такие вещи здесь, такие как суммапродукта или количества или т. д.,

public int getMyTotalQuantity(){
    int totalQuantity = 0;
    for(int i=0; i<_chartdata.size(); i++){
        if(_chartdata.get(i) != null && _chartdata.get(i).getTotal_quantity() != null &&
            !TextUtils.isEmpty(_chartdata.get(i).getTotal_quantity())){
        totalQuantity = totalQuantity + Integer.parseInt(_chartdata.get(i).getTotal_quantity());
    }
    return totalQuantity;
}

Если вы хотите, чтобы представление наконец отображалось с суммой количества, вы можете объявить метод, как указано выше, а затем использовать его в onBindViewHolder, как показано ниже:

if(i==_chartdata.size()-1){//check if list last element

        // to get total quantity
        Toast.makeText(context, "total quantity = " + getMyTotalQuantity(), Toast.LENGTH_SHORT).show();

}

Вы можете создать тот же метод, чтобы получить сумму и использовать ее в держателе вида связывания.

...