gpt4 book ai didi

java - 如何在AsyncTask中传递两个参数?

转载 作者:行者123 更新时间:2023-12-03 10:22:09 24 4
gpt4 key购买 nike

我正在使用MVVM结构,在Dao中的查询如下:

@Query("SELECT * FROM Sorted WHERE date LIKE :date AND categoryChart = :category")
LiveData<List<Sorted>> getSortedDiagramData(String date, String category);

在存储库中,我需要在AsyncTask中执行此方法,但我不知道该怎么做。

我尝试过的
 public LiveData<List<Sorted>> getSortedDiagramData(String date, String category){
String[] array = new String[2];
array[0] = date;
array[1] = category;
return new GetSortedDiagramDataAsyncTask(sortedDao).execute(array);
}

接着:
 private static class GetSortedDiagramDataAsyncTask extends AsyncTask<String[], Void, LiveData<List<Sorted>>> {
private SortedDao sortedDao;
private GetSortedDiagramDataAsyncTask(SortedDao sortedDao){
this.sortedDao = sortedDao;
}
@Override
protected LiveData<List<Sorted>> doInBackground(String[] ... strings) {
String date1 = String.valueOf(strings[0]);
String category1 = String.valueOf(strings[1]);
LiveData<List<Sorted>> list = sortedDao.getSortedDiagramData(date1, category1);
return list;
}
}

但是,当我将“array”传递给execute()时,出现了“Incompatible types”错误。

您能建议我如何解决这个问题吗?谢谢你的帮助。

最佳答案

您可以在构造函数中传递它:

private String date, category;
private SortedDao sortedDao;
public GetSortedDiagramDataAsyncTask(SortedDao sortedDao, String date, String category) {
this.date = date;
this.category = category;
this.sortedDao = sortedDao;
}

@Override
protected LiveData<List<Sorted>> doInBackground(String[]... strings) {
LiveData<List<Sorted>> list = sortedDao.getSortedDiagramData(date, category);
return list;
}

称呼为:
new GetSortedDiagramDataAsyncTask(sortedDao, "date", "category").execute();

关于java - 如何在AsyncTask中传递两个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61593862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com