Java 使用二维码扫描的信息显示recyclerView支票列表

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这三个参数,下面是使用静态类提供的答案。似乎没有代码错误,但未检索到所需列表。我整个星期都在研究这个问题,并尝试了在线教程、视频和教科

我希望这个问题比我上次的道歉有很大的改进,我仍在努力掌握这个窍门。我正在做一个项目,用户扫描二维码,然后在后续活动中显示。我希望在数据库中搜索与二维码信息匹配的支票

二维码阅读器工作正常,其检索的位置信息将在下一个活动中传递和显示。我已经通过一个AsyncTask传递了int positionNumber、int weekNumber和String weekday这三个参数,下面是使用静态类提供的答案。似乎没有代码错误,但未检索到所需列表。我整个星期都在研究这个问题,并尝试了在线教程、视频和教科书。我真的以为AsyncTask上的多个参数可以帮我做到这一点,但运气不好

我已经附上了活动、视图模型、存储库、dao和数据库的代码。请有人指导我,真的想让这个功能在应用程序中工作

@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(这是一个新的观察者(){
@凌驾
更改后的公共无效信息(列表检查信息){
适配器。设置检查信息(检查信息);
}
});
}