下午好,
我有一些来自我控制的数据源的值。我将这些值填充到ListView中。值如下:
“你有超过X的书籍”。这是一个愚蠢的例子,但它得到了我想要理解的观点。除了X之外的所有内容都是静态的,但是当ArrayAdapter填充ListView时,唯一显示的是X.这当然有意义。
我可以想出两种方法来解决这个问题。一种是修改我的数据源,以便提供整个消息。在GUI方面简化了生活,但数据库人员肯定会皱眉。
另一方面,我可以通过id找到TextView并连接EXCEPT ListView只是底层数据的表示,所以我真的会修改数据,然后从db获取它然后更新/重绘列表视图??
很高兴接受输入。 JB
答案 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()
如果没有ViewBinder,您的数据将被映射到适配器上指定的视图,但是使用ViewBinder,您可以执行各种很酷的操作,例如行的替代背景颜色或使视图可点击,具体取决于来源的内容,可能性是无穷无尽的。