[英]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.