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好的,我明白了,我接着做。