Add Total ListView Android

0

Hello, how are you? Greetings to all who participate in this great community. The issue is that I have a ListView where I want to add the total of the fourth column, that is:

From my MainActivity I add to a ArrayList the class Bean that contains val1, val2, val3, total. At the moment I want to show the total amount by clicking on a button

public class ListViewActivity extends AppCompatActivity {
private ItemListAdapter adapter;
TextView result;
ArrayList<Bean>arrayList=new ArrayList<Bean>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_view);
    Button btn = (Button) findViewById(R.id.btn);
    result = (TextView) findViewById(R.id.tvResult);

    for (int i = 0; i < 3; i++) {
        Bean atomPayment=new Bean();
        arrayList.add(atomPayment);
    }
    adapter = new ItemListAdapter(ListViewActivity.this, R.layout.row_item,arrayList);
    ListView listView = (ListView)findViewById(R.id.listview);
    listView.setAdapter(adapter);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            ItemListAdapter.Holder x = new ItemListAdapter.Holder();

            result.setText(String.valueOf(x.SumTotal));

        }
    });

}

public void itemDeleteListner(View v) {
    Bean itemToRemove = (Bean)v.getTag();
    adapter.remove(itemToRemove);
}

}

Well then I send it to the class ItemListAdapter , already in the AfterTextChanged when trying to make the sumtotal it does not show me the desired result.

public class ItemListAdapter extends ArrayAdapter<Bean> {
protected static final String LOG_TAG = ItemListAdapter.class.getSimpleName();

private ArrayList<Bean> items;
private int layoutResourceId;
private Context context;

public ItemListAdapter(Context context, int layoutResourceId, ArrayList<Bean> items)
{
    super(context, layoutResourceId, items);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.items = items;
}

@SuppressLint("ViewHolder")
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    View row = convertView;
    Holder holder = null;

    LayoutInflater inflater = ((Activity) context).getLayoutInflater();
    row = inflater.inflate(layoutResourceId, parent, false);

    holder = new Holder();
    holder.bean = items.get(position);
    holder.ibDelete = (TextView)row.findViewById(R.id.ibDelete);
    holder.ibDelete.setTag(holder.bean);

    holder.etVal1 = (EditText)row.findViewById(R.id.edVal1);
    holder.etVal2 = (EditText)row.findViewById(R.id.edValue2);
    holder.etVal3 = (EditText)row.findViewById(R.id.edValue3);
    holder.tvTotal=(TextView) row.findViewById(R.id.txtTotal);

    setVal1TextChangeListener(holder);
    setVal2TextChangeListener(holder);
    setVal3TextListeners(holder);

    row.setTag(holder);

    setupItem(holder);

    return row;
}

private void setupItem(Holder holder)
{
    holder.etVal1.setText(String.valueOf(holder.bean.getVal1()));
    holder.etVal2.setText(String.valueOf(holder.bean.getVal2()));
    holder.etVal3.setText(String.valueOf(holder.bean.getVal3()));
    holder.tvTotal.setText(String.valueOf(holder.bean.getTotal()));
}

public static class Holder
{
    Bean bean;
    EditText etVal1;
    EditText etVal2;
    EditText etVal3;
    TextView tvTotal;
    TextView ibDelete;
   static double SumTotal;
}

private void setVal1TextChangeListener(final Holder holder)
{
    holder.etVal1.addTextChangedListener(new TextWatcher()
    {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count)
        {
            if(s.toString().length()>0)


                holder.bean.setVal1(Integer.parseInt(s.toString()));
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { }

        @Override
        public void afterTextChanged(Editable s) { }
    });
}



private void setVal2TextChangeListener(final Holder holder)
{
    holder.etVal2.addTextChangedListener(new TextWatcher()
    {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count)
        {
            if(s.toString().length()>0)


                holder.bean.setVal2(Integer.parseInt(s.toString()));
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { }

        @Override
        public void afterTextChanged(Editable s) { }
    });
}


private void setVal3TextListeners(final Holder holder)
{
    holder.etVal3.addTextChangedListener(new TextWatcher()
    {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count)
        {
            try
            {
                if(s.toString().length()>0)
                {
                    holder.bean.setVal3(Integer.parseInt(s.toString()));
                }
            }
            catch (NumberFormatException e)
            {
                Log.e(LOG_TAG, "error reading double value: " + s.toString());
            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after)
        {



        }

        @Override
        public void afterTextChanged(Editable s)
        {
            if(s.toString().length()>0)
            {
                holder.bean.setVal3(Integer.parseInt(s.toString()));

                double val1=Double.parseDouble(holder.etVal1.getText().toString());
                double val2=Double.parseDouble(holder.etVal2.getText().toString());
                double val3=Double.parseDouble(holder.etVal3.getText().toString());


                holder.bean.setTotal((val2*val3/900)*val1);

                holder.tvTotal.setText(String.valueOf((val2*val3/900)*val1));
                holder.SumTotal+=Double.parseDouble(holder.tvTotal.getText().toString());
               // SumTotal=SumTotal+(val2*val3/900)*val1;

            }

        }

    });
}

}

I tried to solve this, I could not, Help please.

    
asked by Wesly Segovia 25.07.2018 в 05:27
source

0 answers