我是iOS新手,我需要创建一个静态表。这在iOS中使用静态单元格很简单但在Android中有这样的东西吗?
为了更准确地说明我需要的东西,每行有3列,TextView只是一个名字,EditText是单位数,最后一个TextView是单位数乘以某个常数。
我目前在Android中理解ListView的方式是我需要创建一个自定义适配器,它将读取strings.xml中的所有字符串常量。但是,如果我这样做,我可以在需要时直观地加载表,但是当EditText值改变时,我如何能够处理它并编辑相应TextView的文本?我需要每一行都是独立的,并且能够为行中的每个元素设置ID,以便我可以访问和编辑它们,但这似乎不可能通过读取string.xml中的值来实现。
很抱歉这里没有给出代码,因为我是Android新手,不知道从哪里开始。如果你能在答案中加入一些代码,那将非常感谢,谢谢!
答案 0 :(得分:0)
如果表的大小未知(即使它已知,它仍然可能更好),最好使用ListView(或现在的RecyclerView,使用LinearLayoutManager)。
ListView / RecyclerView是许多通常具有相同类型数据的项目的视图。正如您所说,将每个数据绑定到一行的组件是适配器。
关于在用户滚动列表时保存信息,您应该更新数据源。这可以做到:
我建议使用RecyclerView并扩展RecyclerView.Adapter,但你可以使用ListView和扩展BaseAdapter做同样的事情,并且很容易切换。
然后我创建一个代表每一行的模型类:这应该包括三列中每一列的字段,例如:
class Item {
private final String name;
private final int units;
private final int result;
Item(String name, int units, int result) {
this.name = name;
this.units = units;
this.result = result;
}
String getName() {
return name;
}
int getUnits() {
return units;
}
int getResult() {
return result;
}
}
然后您的适配器会将List<Item>
作为字段。请注意,尽管可以根据单位和单位数来计算结果,但是执行此操作并不是适配器的责任 - 它应该非常愚蠢,因此非常简单,只需在查询时创建视图,并将视图绑定到当被问到时,在给定位置的项目。