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

Posted

技术标签:

【中文标题】Android - 通过 ID 从动态 EditTexts 获取数据【英文标题】:Android - Get data from a dynamic EditTexts by ID 【发布时间】:2012-11-29 10:01:32 【问题描述】:

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

这部分已经正常工作,但现在我需要通过 ID 访问所有创建的 EditTexts 并获取其数据。如果可能,我想避免创建另一个数组来存储 EditText,因为我已经有了它们的 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】:

ListView 使用 RecycleBin 来重用从 Adapter 创建的视图,因此 ListView 将只包含几个子视图,并且您无法在 ListView 中找到所有 EditText。

为了解决你的问题,你应该使用一个Map来记录所有EditText的值。为它们中的每一个添加 TextWatcher,并在文本更改时刷新 Map 中的值。

【讨论】:

感谢您的关注@faylon....当您说地图时,它是 android 的任何特定功能还是数组列表 (Editbox)? 哦……java.util.Map,java.util.HashMap……别告诉我你没用过。

以上是关于Android - 通过 ID 从动态 EditTexts 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

Android 工作问题解决记录

android 动态获取ID通过Resources的 getIdentifier 方法

Android实现EditText禁止输入换行符但可以根据内容自动换行的解决方法

Android:资源 id 及资源 id 的动态获取

如何使用android中的共享首选项将数据保存在editText中[重复]

简析静态xml布局如何通过动态代码实现