Android Room Database,检索输入的最新记录的特定值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Room Database,检索输入的最新记录的特定值相关的知识,希望对你有一定的参考价值。

我已经使用android会议室数据库创建了我的应用程序,我正在填写学生的记录,我想在选择学生的姓名时从会议室数据库中检索输入的最新记录的页码。这是我的下面的代码DOA

@Dao
public interface NewRecordDAO {

    @Insert(onConflict = REPLACE)
    public void addRecord(NewRecord... newRecord);

    @Update(onConflict = REPLACE)
    public void updateRecord(NewRecord newRecord);

    @Delete
    public void deleteRecord(NewRecord newRecord);

    @Query("DELETE FROM newRecord_table")
    void deleteAllRecords();

    @Query("SELECT * FROM newRecord_table ORDER BY NRdate DESC")
    LiveData<List<NewRecord>> getAllRecord();

    @Query("SELECT * FROM newRecord_table WHERE NRdate = (SELECT MAX(NRdate) FROM newRecord_table)")
    LiveData<List<NewRecord>> findRecordByDate ();
}  

我也有一个存储库类和视图模型类,但是我不在这里发布这些代码。下面是我检索学生的姓名和手机号码并绑定到微调器中的代码。使用此代码,我想检索从微调器中选择的学生最新记录的页码。

newRecordViewModel = ViewModelProviders.of(AddRecord.this).get(NewRecordViewModel.class);
        newRecordViewModel.getAllRecords().observe(this, new Observer<List<NewRecord>>() {
            @Override
            public void onChanged(List<NewRecord> newRecords) {
            }
        });

        selectStudentName.setTitle(getResources().getString(R.string.select_student_name));
        selectStudentName.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(final AdapterView<?> adapterView, View view, final int position, final long l) {
                if ( position == -1 ) {
                    Toast.makeText(AddRecord.this, "No record is selected", Toast.LENGTH_SHORT).show();
                } else {
                    String name = adapterView.getItemAtPosition(position).toString();
                    Toast.makeText(AddRecord.this, name + " is selected", Toast.LENGTH_SHORT).show();
                    String studentMobile = Objects.requireNonNull(studentViewModel.getAllStudents().getValue()).get(position).getMobileNumber();
                    studentMOB.setText("Mobile: " + studentMobile);
                    recordIds = studentViewModel.getAllStudents().getValue().get(position).getId();

                }
            }  

我不知道我是否足够清楚。我希望我是。请帮忙。谢谢

答案

您只需要创建一个新的Query即可获取所需的内容。

以上是关于Android Room Database,检索输入的最新记录的特定值的主要内容,如果未能解决你的问题,请参考以下文章

Android Room Database:如何处理实体中的 Arraylist?

获取 android 房间数据库 java.lang.IllegalArgumentException 的以下异常:@androidx.room.Database 未定义元素视图()

添加1到多关系android Room Database?

Android Room Database:如何嵌入多个实体

Android Room Database 执行批量更新的正确语法是啥?

Android Room Database 应用程序崩溃但未显示任何错误