简体   繁体   English

在非活动类比较器中获取上下文

[英]Getting context in non-activity class comparator

I have to access my database from the comparator class from one of my entity-classes. 我必须从我的一个实体类的比较器类访问我的数据库。 For instancing the database connection I need an application context. 为了实例化数据库连接,我需要一个应用程序上下文。

How do I get the application context in this case: 在这种情况下,如何获取应用程序上下文:

Entity - class with comparator 具有比较器的实体类

static public class CowLastInspectionComparator implements Comparator<Cow> {
    public int compare(Cow cow1, Cow cow2) {
        DbAdapter adapter = DbAdapter.getInstance(new MainView().getApplicationContext()); //this doesn't work
        List<Inspection> inspectionsCow1 = adapter.getInspectionByCow(cow1);
        List<Inspection> inspectionsCow2 = adapter.getInspectionByCow(cow2);

        return inspectionsCow1.get(0).getJob().getJobDate().compareTo(inspectionsCow2.get(0).getJob().getJobDate());
    }
}

Sorting in Activity: 在活动中排序:

 if (sortOption == "Name") Collections.sort(cows, new Cow.CowLastInspectionComparator());
static public class CowLastInspectionComparator implements Comparator<Cow> {
  private Context context;
  CowLastInspectionComparator(Context context){
    this.context=context;
  }
  public int compare(Cow cow1, Cow cow2) {
    DbAdapter adapter = DbAdapter.getInstance(context); //this doesn't work
    List<Inspection> inspectionsCow1 = adapter.getInspectionByCow(cow1);
    List<Inspection> inspectionsCow2 = adapter.getInspectionByCow(cow2);

    return inspectionsCow1.get(0).getJob().getJobDate().compareTo(inspectionsCow2.get(0).getJob().getJobDate());
  }
}

in Activity: 活动中:

 if (sortOption == "Name"){
    Cow.CowLastInspectionComparator comparator=new Cow.CowLastInspectionComparator(this);
    Collections.sort(cows,comparator);
 } 

I have to access my database from the comparator class from one of my entity-classes 我必须从我的一个实体类的比较器类访问数据库

If by this you mean that you want to do database I/O in compare() , that is going to make your compare() calls slow and your sort() calls very slow. 如果这你的意思是你想要做的数据库I / O的compare()也就是将会使你的compare()调用慢,你的sort()调用非常缓慢。 If you want to sort your, um, cows, and they are not all in memory, do a single database query with an ORDER BY clause to get them properly sorted. 如果您想对所有的母牛进行排序,而它们不在内存中,请使用ORDER BY子句进行单个数据库查询,以对它们进行正确排序。

For instancing the database connection I need an application context. 为了实例化数据库连接,我需要一个应用程序上下文。

You need a Context . 您需要一个Context It would not necessarily have to be an Application . 不一定必须是Application

How do I get the application context in this case 在这种情况下,如何获取应用程序上下文

Supply one to the CowLastInspectionComparator , such as via a constructor parameter. CowLastInspectionComparator提供一个,例如通过构造函数参数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM