我有一个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;
}

10-07 17:31