将静态文本和数据组合到ListView中的最佳方法

时间:2012-05-16 22:09:14

标签: java android

下午好,

我有一些来自我控制的数据源的值。我将这些值填充到ListView中。值如下:

“你有超过X的书籍”。这是一个愚蠢的例子,但它得到了我想要理解的观点。除了X之外的所有内容都是静态的,但是当ArrayAdapter填充ListView时,唯一显示的是X.这当然有意义。

我可以想出两种方法来解决这个问题。一种是修改我的数据源,以便提供整个消息。在GUI方面简化了生活,但数据库人员肯定会皱眉。

另一方面,我可以通过id找到TextView并连接EXCEPT ListView只是底层数据的表示,所以我真的会修改数据,然后从db获取它然后更新/重绘列表视图??

很高兴接受输入。 JB

1 个答案:

答案 0 :(得分:2)

将Binder附加到列表适配器并修改设置到其中的数据。假设您有一个名为myAdapter的适配器:

myAdapter.setViewBinder(new MyViewBinder());

public class MyViewBinder implements ViewBinder {
    @Override
    public boolean setViewValue(View view, Object data, String text){
        if(view instanceof TextView){
            ((TextView)view).setText(String.format("You have %s books overdue",text));
        }
    }
}

当您到达代码中的ViewBinder时,程序会尝试填充您的列表。然后,您将检查视图是否为TextView的实例,如果是,则使用变量text,在这种情况下是数据源位置X的元素,我们创建一个格式为String的字符串包括源数据。

如果您为每行填充了多个视图,则可以使用view.getId()

检查ID

如果没有ViewBinder,您的数据将被映射到适配器上指定的视图,但是使用ViewBinder,您可以执行各种很酷的操作,例如行的替代背景颜色或使视图可点击,具体取决于来源的内容,可能性是无穷无尽的。