如何在Android中创建静态表格?

4
我是从iOS转到Android编程的新手,我需要创建一个静态表格。在iOS中使用静态单元格很简单,但是在Android中是否有这样的东西呢?
更具体地说,每行有3列:一个TextView是名称,一个EditText是单位数,最后一个TextView是单位数乘以某个常数。
我目前了解的Android中的ListView是需要制作自定义适配器,该适配器将从strings.xml中读取所有字符串常量。如果我这样做,虽然我可以按照需要直观地加载表格,但是当EditText值发生变化时,我如何处理并编辑相应TextView的文本?我需要每一行都是独立的,并能够为每一行中的每个元素设置ID,以便我可以访问和编辑它们,但仅通过从string.xml中读取值似乎无法实现此目标。
抱歉这里没有给出代码,因为我是Android新手,不知道从哪里开始。如果您能在您的答案中包含一些代码,那将非常感激,谢谢!
1个回答

0
如果表的大小未知(即使已知,仍然可能更好),最好使用ListView(或现在的RecyclerView,使用LinearLayoutManager)。
ListView / RecyclerView是通常具有相同类型数据的许多项目的视图。将每个数据绑定到行的组件,正如您所说,是适配器。
关于在用户滚动列表时保存信息,您应该更新数据源。这可以通过以下方式完成:
  • 立即,在输入每个数据后
  • 当每行滚动出屏幕时,可以保存该行数据(搜索:on view recycled)+当用户离开屏幕时

我建议使用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>作为字段。请注意,虽然可以根据单位和单位数量计算结果,但适配器不负责此操作-它应该非常简单,仅在被要求时创建视图,并将视图绑定到给定位置的项目。


  • 另一个类似的问题,OP问如何编辑ListView(使用ListAdapter)的项目,并在用户上下滚动时保留更改。
  • ListView,在视图被回收时的回调函数(滚动出屏幕)
  • RecyclerView,在视图被回收时的回调函数

  • 网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接