[英]Getting context in non-activity class 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());
}
}
在活動中排序:
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());
}
}
活動中:
if (sortOption == "Name"){
Cow.CowLastInspectionComparator comparator=new Cow.CowLastInspectionComparator(this);
Collections.sort(cows,comparator);
}
我必須從我的一個實體類的比較器類訪問數據庫
如果這你的意思是你想要做的數據庫I / O的compare()
也就是將會使你的compare()
調用慢,你的sort()
調用非常緩慢。 如果您想對所有的母牛進行排序,而它們不在內存中,請使用ORDER BY
子句進行單個數據庫查詢,以對它們進行正確排序。
為了實例化數據庫連接,我需要一個應用程序上下文。
您需要一個Context
。 不一定必須是Application
。
在這種情況下,如何獲取應用程序上下文
向CowLastInspectionComparator
提供一個,例如通過構造函數參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.