Java 使用TextWatcher更新ListView中的EditText
首先,我编写了一些代码来尝试:Java 使用TextWatcher更新ListView中的EditText,java,android,android-listview,textwatcher,Java,Android,Android Listview,Textwatcher,首先,我编写了一些代码来尝试: @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflat
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.unit, parent, false);
final TextView unitName = (TextView) rowView.findViewById(R.id.unit_name);
final EditText unitValue = (EditText) rowView.findViewById(R.id.unit_value);
if(units.get(position).getView() == 1) {
unitName.setText(units.get(position).getUnitName());
unitValue.setText("0.00");
} else {
unitName.setVisibility(View.GONE);
unitValue.setVisibility(View.GONE);
}
unitValue.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//nothing here
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
HashMap<String, Double> conversionFactors = new HashMap<String, Double>();
//CONVERTER CLASS
Converter converter = new Converter(type, unitName.getText().toString(), unitValue.getText().toString());
//CONVERT METHOD
conversionFactors = converter.convert();
//UPDATE ALL OF THE UNITVALUES IN THEIR CURRENT ORDER
}
@Override
public void afterTextChanged(Editable s) {
//nothing here
}
});
return rowView;
}
@覆盖
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图行视图=充气机充气(R.layout.unit,父项,false);
final TextView unitName=(TextView)rowView.findViewById(R.id.unit\u name);
最终的EditText unitValue=(EditText)rowView.findViewById(R.id.unit_值);
if(units.get(position).getView()==1){
unitName.setText(units.get(position.getUnitName());
unitValue.setText(“0.00”);
}否则{
unitName.setVisibility(View.GONE);
unitValue.setVisibility(View.GONE);
}
addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
//这里什么都没有
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
HashMap conversionFactors=新HashMap();
//转换器类
Converter Converter=新转换器(类型,unitName.getText().toString(),unitValue.getText().toString());
//转换方法
conversionFactors=converter.convert();
//按当前顺序更新所有单位值
}
@凌驾
公共无效后文本已更改(可编辑){
//这里什么都没有
}
});
返回行视图;
}
我有一个HashMap
,其中键是布局中的TextView
对象,因此我将遍历它们并使用HashMap
中的相应值更新它们相应的EditText
对象
这将发生在
onTextChanged
方法中,但问题在于我的理解。既然我已经实例化了视图,有没有一种方法可以迭代所有EditText
对象并更新它们?还是只更新我的阵列适配器
?不太确定下一步要去哪里…非常感谢您提供一些见解。更新您的适配器。这是更好的一个。@Sripathi谢谢你,我继续更新适配器,看看它对我有什么作用。非常感谢。虽然ArrayAdapter只包含填充视图中TextView对象的字符串列表,但我正在尝试更新与其对应的EditText对象,因此我看不出更新ArrayAdapter有多大用处…如果更新EditText的对象,然后,您需要通知适配器在适配器中进行更改。所以这是更新适配器的一种直接方法。@Sripathi好的,我明白了,我接着做。