Java 如何在AsyncTask中传递两个参数?
我使用的是MVVM结构,我在Dao中的查询如下所示:Java 如何在AsyncTask中传递两个参数?,java,android,mvvm,android-asynctask,android-livedata,Java,Android,Mvvm,Android Asynctask,Android Livedata,我使用的是MVVM结构,我在Dao中的查询如下所示: @Query("SELECT * FROM Sorted WHERE date LIKE :date AND categoryChart = :category") LiveData<List<Sorted>> getSortedDiagramData(String date, String category); @Query(“从排序的日期中选择*,如:date和categoryChart=:category”)
@Query("SELECT * FROM Sorted WHERE date LIKE :date AND categoryChart = :category")
LiveData<List<Sorted>> getSortedDiagramData(String date, String category);
@Query(“从排序的日期中选择*,如:date和categoryChart=:category”)
LiveData getSortedDiagramData(字符串日期、字符串类别);
在存储库中,我需要在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);
}
public LiveData getSortedDiagramData(字符串日期,字符串类别){
字符串[]数组=新字符串[2];
数组[0]=日期;
数组[1]=类别;
返回新的GetSortedDiagramDataAsyncTask(sortedDao)。执行(数组);
}
然后:
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;
}
}
私有静态类GetSortedDiagramDataAsyncTask扩展了AsyncTask{
私人分拣口分拣口分拣口;
专用GetSortedDiagramDataAsyncTask(SortedDao SortedDao){
this.sortedDao=sortedDao;
}
@凌驾
受保护的LiveData doInBackground(字符串[]…字符串){
String date1=String.valueOf(strings[0]);
String category1=String.valueOf(strings[1]);
LiveData list=sortedDao.getSortedDiagramData(日期1,类别1);
退货清单;
}
}
但是当我将“array”传递给execute()时,出现了一个错误“compatibletypes”
你能建议我如何解决这个问题吗?谢谢您的帮助。您可以在构造函数中传递它:
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;
}
您可以在构造函数中传递它:
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;
}
另一种方法是:
GetSortedDiagramDataAsyncTask(sortedDao).execute(date,category);
另一种方法是:
GetSortedDiagramDataAsyncTask(sortedDao).execute(date,category);
在构造函数中传递参数。你能举个例子吗?你已经有了一个例子。这是你的问题
GetSortedDiagramDataAsyncTask
有一个构造函数:GetSortedDiagramDataAsyncTask(SortedDao-SortedDao)
。您可以向其中添加其他参数,并以存储sortedDao
的方式将其存储在字段中。但是请注意,AsyncTask
已被弃用。请在构造函数中传递参数。是否可以给出一个示例?您已经有了一个示例。这是你的问题GetSortedDiagramDataAsyncTask
有一个构造函数:GetSortedDiagramDataAsyncTask(SortedDao-SortedDao)
。您可以向其中添加其他参数,并以存储sortedDao
的方式将其存储在字段中。但是请注意,AsyncTask
已被弃用。