Android - 通过ID从动态EditTexts获取数据

时间:2012-11-29 10:01:32

标签: android expandablelistview expandablelistadapter

我在我的适配器中有以下代码,它使用方法“et_settingValue.setId(setting.getId());”动态创建EditTexts并设置ID。 在类设置的每个实例中都会创建一个Editbox,它还包含一个用于存储其id的变量。

这部分已经正常工作,但现在我需要按ID访问所有创建的EditTexts并获取其数据。如果可能的话,我想避免创建另一个数组来存储EditTexts,因为我已经拥有了他们的ID。

有没有办法使用我已经拥有的动态ID?

EditText et_settingValue = (EditText) view.findViewById(R.id.et_settingValue);
et_settingValue.setText(setting.getValue().trim());
et_settingValue.setId(setting.getId());

更新1

在我的活动中,我正在尝试这样做:

EditText et = new EditText(listView.getContext());
//loop to get each object child 
settingConfig.getConfigName(); //ok
settingConfig.getConfigValue(); //ok
settingConfig.getConfigId(); //ok
et = (EditText) listView.findViewById(settingConfig.getConfigId()); //not working
et.getText(); // off course it will not working

非常感谢

1 个答案:

答案 0 :(得分:1)

ListView使用RecycleBin重用从Adapter创建的视图,因此ListView只包含一些子视图,而在ListView中找不到所有的EditText。

要解决您的问题,您应该使用Map来记录所有EditText的值。将TextWatcher添加到每个文件中,并刷新Map中的值,更改文本。