簡體   English   中英

在非活動類比較器中獲取上下文

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM