当列表项中的edittext更改时,无法更新listview下面显示的值

时间:2014-10-15 12:39:57

标签: android listview

enter image description here

我想更新列表中的edittext值变更时的总金额。我已经尝试了几个事件,包括onfocuschanged listener和textchange listener.But没有完全满足我的需求。我不需要代码但是如果有人可以建议我有任何逻辑然后它会有所帮助。谢谢你

2 个答案:

答案 0 :(得分:1)

您只需要 TextWatcher 来满足您的要求,我已经开发了这样的应用程序,我在其中提供相同的功能。

步骤:

  • 在TextWatcher中设置列表项的数量
  • 计算总金额
            - 迭代列表并计算amt = price *数量
            - 总结所有金额,即总计
  • 返回此总计调用Activity和setText

适配器代码:

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            int pos = editQtyTag.position;
            if (!s.toString().trim().equals("")) {

                data.get(pos).setQuantiy(Integer.parseInt(s.toString()));

                if (mListener instanceof Activity) {
                    ((Activity) mListener).setReturnValue(
                            setAmt());
                }

            }
        }

 public float setAmt() {
    float total = 0;
    // iterate through the list and calculate the total amount

    return total;
}

活动代码:

public void setReturnValue(float amt) {

    mTxtAmt.setText(amt+"");

}

希望它会对你有所帮助。 :)

答案 1 :(得分:0)

您需要 TextChangedListener ,以便在列表中的edittext值更改时更改总计金额,如下所示。

    editsearch = (EditText) findViewById(R.id.editSearch);

    // Capture Text in EditText
    editsearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
            String charText = editsearch.getText().toString().toLowerCase(Locale.getDefault());

            charText = charText.toLowerCase(Locale.getDefault());

          // do stuff what you want with charText 

        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1,
                int arg2, int arg3) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub
        }

    });