Android:动态创建一个对象列表,每个对象都有自己的按钮和 EditTexts

标签 android

我想动态地将行添加到线性布局,其中每行都有 2 个按钮和 2 个编辑文本。我不确定组织这个的最佳方式。我有想法为每一行创建一个类,其中包含按钮和编辑文本,但 FindViewByID 不能那样工作。另一个想法是为每个对象包含一个布局实例,但如果我有 10 个对象、20 个按钮和 20 个编辑文本,我不确定在不创建 Action 监听器的情况下有效访问布局中按钮的最佳方法。如果我这样做,是否可以使用一系列包含的布局并在需要时添加它们?

最佳答案

我只想为该行创建一个布局文件,使用 LayoutInflator 动态创建它,并为每个创建监听器。我不认为开销会杀死你。

如果它的行数可变,您应该使用自定义 ArrayAdaptor 在 ListView 中执行此操作,并回收您的布局。

LayoutInflater inflater = LayoutInflater.from(this);
View yourRowView = inflator.inflate(R.layout.yourrowfile, null);
yourRowView.findByViewId(R.id.firstButton). setOnClickListener(//blah blah blah

((ViewGroup)findByViewId(R.id.yourParentContainer)).addView(yourRowView);

LayoutInflator 从您的 xml 布局定义中扩充布局。通常在 Activity 中,你只需将 R.layout.[whatever] 传递给 setContentView,但如果你想动态创建一个 View 并添加它,你可以使用上面的代码(或类似的)。请注意,要填充框并触发按钮,您需要在 View 上调用 findByViewId。我经常错误地在 Activity 上调用该方法(习惯的力量)。

要使用自定义 UI 制作 ListView ,其概念相似,但管道稍微复杂一些,但被广泛描述。这是一个例子:

http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

关于Android:动态创建一个对象列表,每个对象都有自己的按钮和 EditTexts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8003726/

相关文章:

android - 用于从列中查找特定数据的 sqlite 搜索查询?

android - 检查选定的构建在gradle上

android - C 源代码不会为 ARM 架构编译

Android onNewIntent() 在 Activity 不可见时未触发

android - 键入 "cordova build android"时 cordova 出错

android - 如何更改汉堡菜单图标的颜色?

android - 应用内结算不适用于 G1

java - Android Notepadv1 教程 - 持久化 mNoteNumber?

java - 选择 ListView 项目后应用程序自动关闭

android - android studio 中的数据绑定(bind)基础。 ActivitymainBinding 不是 ViewDataBinding 的子类型