如何从ListView获取edittext值?

时间:2020-06-30 10:17:48

标签: java android listview android-edittext

listview包含一个edittext列表。我想这样做,以便在更改列表视图“ myview:”的edittext中的文本时,单击按钮(使用功能“ CheckInputer()”)时,列表视图“ receipt”中的价格值发生变化。但是当我输入一个列表视图“ myview”的edittext中添加新值,然后按按钮,此新值未插入列表视图“ receipt”的价格中。我需要做些什么来解决此问题?

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

    myView = (Listview) findViewById(R.id.my_view);
    myButton = (Button) findViewById(R.id.my_button);
    receipt = (Listview) findViewById(R.id.receipt);
    totoalPriceText = (Textview) findViewById(R.id.totalPriceText);

    // initialize as invisible (could also do in xml)
    myView.setVisibility(View.INVISIBLE);
    isUp = true;
    itemsLayout = findViewById(R.id.itemsLayout);

    baseHeight = 172;

    WorkList workList = new WorkList("Демонтаж стяжки", "м.кв", "234", "10", "Демонтаж2");
    WorkList workList1 = new WorkList("Демонтаж стяжки2", "м.кв", "6", "10", "Демонтаж2");
    WorkList workList2 = new WorkList("Демонтаж стяжки3", "м.кв","7", "10", "Демонтаж4");
    WorkList workList3 = new WorkList("Демонтаж стяжки4", "м.кв","96", "10", "Демонтаж3");
    ListOfWork = new ArrayList<WorkList>();
    ListOfWork.add(workList);
    ListOfWork.add(workList1);
    ListOfWork.add(workList2);
    ListOfWork.add(workList3);

    adapter = new WorkListAdapter(this, R.layout.adapter_view_layout, ListOfWork);
    myView.setAdapter(adapter);

    ListOfReceipt = new ArrayList<ReceiptList>();

    context = getApplicationContext();
    receiptListAdapter = new ReceiptListAdapter(context, R.layout.receiptlist_adapter, ListOfReceipt);
}

public void onSlideViewButtonClick(View view) {
    if (isUp) {
        Animation animSlideDown = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.slide_down);
        myView.startAnimation(animSlideDown);
        myView.setVisibility(View.VISIBLE);
    } else {
        Animation animSlideUp = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.slide_up);
        myView.startAnimation(animSlideUp);
        myView.setVisibility(View.INVISIBLE);
    }
    isUp = !isUp;
}

@SuppressLint("SetTextI18n")
public void  CheckInputer(View view){
    priceForText = 0;
    ListOfReceipt.clear();
    for (int i=0; i < ListOfWork.size(); i++) {

        //Updating edittext value
        EditText editTextCount = myView.getAdapter().getView(i, null, myView).findViewById(R.id.txtcount);
        TextView tagsSpinnerItem = myView.getAdapter().getView(i, null, myView).findViewById(R.id.textView4);


        final int finalI = i;
        editTextCount.addTextChangedListener(new TextWatcher() {

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

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                ListOfWork.get(finalI).setCount(s.toString());
                adapter.notifyDataSetChanged();
                adapter = new WorkListAdapter(context, R.layout.adapter_view_layout, ListOfWork);
                myView.setAdapter(adapter);
            }
        });


        //Checking value of edittext
        if(ListOfWork.get(i).getCount().trim().length() > 0){
                //Adding objects to receipt listview0
                float totalPrice = Float.parseFloat(ListOfWork.get(i).getCount()) * Float.parseFloat(ListOfWork.get(i).getPriceItem());
                ListOfReceipt.add(new ReceiptList(ListOfWork.get(i).getName(), Float.toString(totalPrice) + "zł"));
                receipt.setAdapter(receiptListAdapter);
                //Total Price
                priceForText += totalPrice;
                totoalPriceText.setText(Float.toString(priceForText) + "zł");
        }
    }
    int totalHeight1 = 0;//Check
    int totalHeight2 = 0;

    totalHeight1 = baseHeight * receipt.getCount();//Check
    totalHeight2 = baseHeight * (myView.getCount() +1);

    ViewGroup.LayoutParams params1 = receipt.getLayoutParams();//Check
    ViewGroup.LayoutParams params2 = myView.getLayoutParams();

    params1.height = totalHeight1;//Check
    params2.height = totalHeight2;

    receipt.setLayoutParams(params1);//Check
    myView.setLayoutParams(params2);
}

}

0 个答案:

没有答案
相关问题