2

下午好,

我有一些来自我可以控制的数据源的值。我将这些值填充到 ListView 中。这些值是这样的:

“你有 X 本书逾期”。这是一个愚蠢的例子,但它得到了我想要理解的重点。除了 X 之外的所有内容都是静态的,但是当 ArrayAdapter 填充 ListView 时,唯一显示的是 X。这当然是有道理的。

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

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

输入欣然接受。JB

4

1 回答 1

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代码中的 时,程序正在尝试填充您的列表。然后,您将检查视图是否作为实例,如果是,则使用在本例中是数据源位置 X 的元素TextView的变量,我们创建一个包含源数据格式的字符串。text

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

如果没有 ViewBinder,您的数据将映射到适配器上指定的视图,但是使用 ViewBinder,您可以执行各种很酷的操作,例如为行替换背景颜色或根据内容的内容使视图可点击源,可能性是无限的。

于 2012-05-16T22:18:38.730 回答