我必须从我的一个实体类中的比较器类访问我的数据库。 为了实现数据库连接的实例化,我需要一个应用程序上下文。
在这种情况下如何获取应用程序上下文:
实体 - 带比较器的类
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());
}
}
在活动中排序:
if (sortOption == "Name") Collections.sort(cows, new Cow.CowLastInspectionComparator());
答案 0 :(得分:2)
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());
}
}
在活动中:
if (sortOption == "Name"){
Cow.CowLastInspectionComparator comparator=new Cow.CowLastInspectionComparator(this);
Collections.sort(cows,comparator);
}
答案 1 :(得分:0)
我必须从我的一个实体类
中的比较器类访问我的数据库
如果这意味着你想要在compare()
中进行数据库I / O,这会使compare()
来电变慢,而sort()
来电非常< / strong>慢。如果你想对你的,嗯,奶牛进行排序,并且它们不在内存中,那么使用ORDER BY
子句进行单个数据库查询,以使它们正确排序。
为了实例化数据库连接,我需要一个应用程序上下文。
您需要Context
。它不一定是Application
。
在这种情况下如何获取应用程序上下文
向CowLastInspectionComparator
提供一个,例如通过构造函数参数。