如何在Android中创建静态表?

时间:2015-06-13 18:08:38

标签: java android

我是iOS新手,我需要创建一个静态表。这在iOS中使用静态单元格很简单但在Android中有这样的东西吗?

为了更准确地说明我需要的东西,每行有3列,TextView只是一个名字,EditText是单位数,最后一个TextView是单位数乘以某个常数。

我目前在Android中理解ListView的方式是我需要创建一个自定义适配器,它将读取strings.xml中的所有字符串常量。但是,如果我这样做,我可以在需要时直观地加载表,但是当EditText值改变时,我如何能够处理它并编辑相应TextView的文本?我需要每一行都是独立的,并且能够为行中的每个元素设置ID,以便我可以访问和编辑它们,但这似乎不可能通过读取string.xml中的值来实现。

很抱歉这里没有给出代码,因为我是Android新手,不知道从哪里开始。如果你能在答案中加入一些代码,那将非常感谢,谢谢!

1 个答案:

答案 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>作为字段。请注意,尽管可以根据单位和单位数来计算结果,但是执行此操作并不是适配器的责任 - 它应该非常愚蠢,因此非常简单,只需在查询时创建视图,并将视图绑定到当被问到时,在给定位置的项目。