我有多个具有实现textwatcher的edittexts的LinearLayout,因此当我输入任何值时它会直接放入hashmap,但我想在完成编辑后添加完整的值,我的代码如下:
TextWatcher textwatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
calculateInvoice();
HashMap<String, String> descMap = new HashMap<String, String>();
descMap.put("qty", et_qty.getText().toString() + "");
descMap.put("upriz", et_unit_prize.getText().toString() + "");
descMap.put("amt", subtotal + "");
System.out.println("::::::::::::::::::MAP VALUES::::::::::" + descMap);
descList.add(descMap);
}
};
最佳答案
让您拥有 5 个在 xml 文件中定义的 editText View 。假设它们是editText0、editText1...editText4。
现在在您的 Activity 类中,
1
构造一个字符串数组:String[] Data = new String[5]
2
将文本观察器分别添加到每个 EditText。像:
editText0.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {}
@Override
public void afterTextChanged(Editable Token)
{
final int index = 0; // as this Text Watcher is specifically for editText0
Data[index] = Token.toString();
}
});
3
类似地,将 TextWatcher 添加到所有剩余的 4 个 EditTextView。
关于java - 如何仅在使用android中的textwatcher从edittext完成编辑后才将值添加到hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24865127/