我有一个ViewBinder
充当我的ListView
和数据库的游标适配器之间的中间人。根据显示该数据的上下文,我需要ViewBinder
做不同的事情。
例如,以任务管理应用程序为例,该应用程序显示存在的所有任务组的任务。也许在这种情况下,如果应用不想显示特定任务组之一的任务,则该应用希望在列表视图中显示任务组的名称。列表视图项可能具有隐藏字段,并且ViewBinder
可用于将任务组的名称映射到该字段,并在必要时将其设置为可见(如主应用程序所指示)。
我的问题是如何告诉ViewBinder
它显示的上下文,以便可以确定其行为方式?
我意识到可以通过实现许多不同的ViewBinders
来完成此操作,但这将需要复制大量代码,并且更喜欢使用仅将某些参数传递给的单个ViewBinder
来实现。
最佳答案
这可以通过实现要实现的ViewBinder的构造函数来完成。
根据示例,可以执行以下操作:
private Boolean displayGroupName = true;
public ToDoViewBinder(Boolean displayGroupName) {
this.displayGroupName = displayGroupName;
}
@Override
public boolean setViewValue(View view, Cursor c, int columnIndex) {
if(displayGroupName)
{
//Do necessary stuff
return true;
}
else
return false;
}