Java 使用二维码扫描的信息显示recyclerView支票列表
我希望这个问题比我上次的道歉有很大的改进,我仍在努力掌握这个窍门。我正在做一个项目,用户扫描二维码,然后在后续活动中显示。我希望在数据库中搜索与二维码信息匹配的支票 二维码阅读器工作正常,其检索的位置信息将在下一个活动中传递和显示。我已经通过一个AsyncTask传递了int positionNumber、int weekNumber和String weekday这三个参数,下面是使用静态类提供的答案。似乎没有代码错误,但未检索到所需列表。我整个星期都在研究这个问题,并尝试了在线教程、视频和教科书。我真的以为AsyncTask上的多个参数可以帮我做到这一点,但运气不好 我已经附上了活动、视图模型、存储库、dao和数据库的代码。请有人指导我,真的想让这个功能在应用程序中工作Java 使用二维码扫描的信息显示recyclerView支票列表,java,android-studio,android-recyclerview,android-asynctask,dao,Java,Android Studio,Android Recyclerview,Android Asynctask,Dao,我希望这个问题比我上次的道歉有很大的改进,我仍在努力掌握这个窍门。我正在做一个项目,用户扫描二维码,然后在后续活动中显示。我希望在数据库中搜索与二维码信息匹配的支票 二维码阅读器工作正常,其检索的位置信息将在下一个活动中传递和显示。我已经通过一个AsyncTask传递了int positionNumber、int weekNumber和String weekday这三个参数,下面是使用静态类提供的答案。似乎没有代码错误,但未检索到所需列表。我整个星期都在研究这个问题,并尝试了在线教程、视频和教科
@Dao
public interface InspectionInformationDao {
@Query("SELECT * FROM inspection_information WHERE pos_number =:positionNum AND week_number =:weekNum AND week_day =:dayOfWeek ")
List<InspectionInformation> getDailyChecks(int positionNum, int weekNum, String dayOfWeek);
@Insert
void insert(InspectionInformation inspectionInformation);
}
REPOSITORY CODE
private MutableLiveData<List<InspectionInformation>> checkSearchResults = new MutableLiveData<>();
public PosCheckRepository(Application application) {
PlantPosCheckDatabase plantPosCheckDatabase = PlantPosCheckDatabase.getInstance(application);
posInfoDao = plantPosCheckDatabase.posInfoDao();
inspectionInformationDao = plantPosCheckDatabase.inspectionInformationDao();
allPositionInfo = posInfoDao.getAllPositionInfo();
}
public MutableLiveData<List<InspectionInformation>> getCheckSearchResults() {
return checkSearchResults;
}
private void asyncFinished(List<InspectionInformation> results) {
checkSearchResults.setValue(results);
}
private static class SearchParams {
int positionNumber;
int weekNumber;
String weekDay;
SearchParams(int positionNumber, int weekNumber, String weekDay) {
this.positionNumber = positionNumber;
this.weekDay = weekDay;
this.weekNumber = weekNumber;
}
}
private static class QueryAsyncTask extends AsyncTask<SearchParams, Void, List<InspectionInformation>> {
private InspectionInformationDao asyncTaskDao;
private PosCheckRepository delegate = null;
QueryAsyncTask(InspectionInformationDao dao){
asyncTaskDao = dao;
}
@Override
protected List<InspectionInformation> doInBackground(final SearchParams... params) {
int positionNumber = params[0].positionNumber;
int weekNumber = params[0].weekNumber;
String weekDay = params[0].weekDay;
return asyncTaskDao.getDailyChecks(positionNumber,weekNumber,weekDay);
}
@Override
protected void onPostExecute(List<InspectionInformation> result) {
delegate.asyncFinished(result);
}
}
public void findChecks(int positionNumber, int weekNumber, String weekDay) {
SearchParams searchParams = new SearchParams(positionNumber, weekNumber,weekDay);
QueryAsyncTask task = new QueryAsyncTask(inspectionInformationDao);
task.delegate = this;
task.execute(searchParams);
}
VIEWMODEL CODE
private MutableLiveData<List<InspectionInformation>> checkSearchResults;
public PosCheckViewModel(@NonNull Application application) {
super(application);
repository = new PosCheckRepository(application);
checkSearchResults = repository.getCheckSearchResults();
}
MutableLiveData<List<InspectionInformation>> getCheckSearchResults() {
return checkSearchResults;
}
public void findChecks(int positionNumber, int weekNumber, String weekDay) {
repository.findChecks(positionNumber, weekNumber, weekDay);
}
MAIN ACTIVITY CODE
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inspection_check_activity);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
dateTime = findViewById(R.id.insp_date);
locationDetails = findViewById(R.id.inspected_location);
positionNumber = findViewById(R.id.poition_number_inspected);
calendar = Calendar.getInstance();
final PosCheckAdapter adapter = new PosCheckAdapter();
recyclerView.setAdapter(adapter);
posCheckViewModel = new ViewModelProvider(this).get(PosCheckViewModel.class);
Bundle extras = getIntent().getExtras();
if (extras == null) {
return;
}
setDateTime();
setDayOfWeek();
setLocationDetails();
setPositionNumber();
setWeekNumber();
posCheckViewModel.getCheckSearchResults().observe(this, new Observer<List<InspectionInformation>>() {
@Override
public void onChanged(List<InspectionInformation> inspectionInformations) {
adapter.setInspectionInformations(inspectionInformations);
}
});
}
@Dao
公共接口检查信息DAO{
@查询(“从检验信息中选择*,其中位置号=:位置号和周号=:周号和周日=:周日”)
列出getDailyChecks(int-positionNum、int-weekNum、String-dayOfWeek);
@插入
空白插入(检查信息检查信息);
}
存储库代码
私有MutableLiveData checkSearchResults=新的MutableLiveData();
公共PosCheckRepository(应用程序){
PlantPosCheckDatabase PlantPosCheckDatabase=PlantPosCheckDatabase.getInstance(应用程序);
posInfoDao=plantPosCheckDatabase.posInfoDao();
inspectionInformationDao=plantPosCheckDatabase.inspectionInformationDao();
allPositionInfo=posInfoDao.getAllPositionInfo();
}
公共可变LiveData getCheckSearchResults(){
返回checkSearchResults;
}
私有void异步完成(列出结果){
checkSearchResults.setValue(结果);
}
私有静态类SearchParams{
int位置编号;
国际周数;
字符串工作日;
SearchParams(int positionNumber、int weekNumber、String weekDay){
此。位置编号=位置编号;
this.weekDay=工作日;
this.weekNumber=weekNumber;
}
}
私有静态类QueryAsyncTask扩展异步任务{
私有检查信息DAO asyncTaskDao;
私有PosCheckRepository委托=null;
QueryAsyncTask(检查信息dao){
asyncTaskDao=dao;
}
@凌驾
受保护列表doInBackground(最终搜索参数…参数){
int positionNumber=params[0]。positionNumber;
int weekNumber=参数[0]。weekNumber;
字符串weekDay=params[0]。weekDay;
返回asyncTaskDao.getDailyChecks(职位编号、工作周编号、工作日);
}
@凌驾
受保护的void onPostExecute(列表结果){
delegate.asyncFinished(结果);
}
}
公共无效查找检查(int positionNumber、int weekNumber、String weekDay){
SearchParams SearchParams=新的SearchParams(职位编号、周编号、工作日);
QueryAsyncTask任务=新建QueryAsyncTask(检查信息DAO);
task.delegate=this;
task.execute(searchParams);
}
视图模型代码
私有MutableLiveData检查搜索结果;
公共PosCheckViewModel(@NonNull应用程序){
超级(应用);
repository=新的PosCheckRepository(应用程序);
checkSearchResults=repository.getCheckSearchResults();
}
MutableLiveData getCheckSearchResults(){
返回checkSearchResults;
}
公共无效查找检查(int positionNumber、int weekNumber、String weekDay){
存储库。findChecks(职位编号、工作周编号、工作日);
}
主要活动代码
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.inspection\u check\u活动);
RecyclerView RecyclerView=findViewById(R.id.recycler\u视图);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
recyclerView.setHasFixedSize(true);
dateTime=findViewById(R.id.insp_日期);
位置详情=findViewById(R.id.检查位置);
位置编号=findViewById(R.id.位置编号\U检查);
calendar=calendar.getInstance();
最终PosCheckAdapter=新的PosCheckAdapter();
recyclerView.setAdapter(适配器);
posCheckViewModel=newViewModelProvider(this.get)(posCheckViewModel.class);
Bundle extras=getIntent().getExtras();
如果(附加==null){
返回;
}
setDateTime();
setDayOfWeek();
setLocationDetails();
setPositionNumber();
setWeekNumber();
posCheckViewModel.getCheckSearchResults().observe(这是一个新的观察者(){
@凌驾
更改后的公共无效信息(列表检查信息){
适配器。设置检查信息(检查信息);
}
});
}