会议室数据库-访问第二个活动的数据

时间:2018-08-17 23:59:48

标签: android database sqlite

很抱歉,如果这是重复的。 我目前正在使用ToDo应用,正在使用Room数据库库通过RecyclerView显示项目列表。在主要活动中,我可以使用适配器从数据库访问信息。没问题。

问题是,当我按下其中一项时,我想打开一个DetailActivity,用户可以在其中修改ToDo。目前,我正在使用putExtra和hasExtra获取所需的信息:

MainActivity

private void initializeAdapterForRecyclerView(){
    mAdapter = new ToDoAdapter(new ToDoAdapter.ToDoClickListener() {
        @Override
        public void onToDoClick(int clickedItemIndex) {
            Intent intent = new Intent(ToDoActivity.this, EditorActivity.class);
            Log.d(LOG_TAG, "This is " + mAdapter.getToDoPosition(clickedItemIndex).getTitle());
            intent.putExtra(Intent.EXTRA_TEXT, String.valueOf(clickedItemIndex));
            intent.putExtra("existingTitle", mAdapter.getToDoPosition(clickedItemIndex).getTitle());
            intent.putExtra("modifiedTitle", mAdapter.getToDoPosition(clickedItemIndex).getDisplayTitle());
            intent.putExtra("existingDescription", mAdapter.getToDoPosition(clickedItemIndex).getDescription());

            startActivity(intent);
        }
    });

    mToDoList.setAdapter(mAdapter);
}

DetailActivity

private void getExistingToDoContent() {
    Intent intent = getIntent();
    if (intent.hasExtra("existingTitle")) {
        String displayTitle = intent.getStringExtra("modifiedTitle");
        Log.d(LOG_TAG, "Getting the title: " + displayTitle);
        mTitleEditText.setText(displayTitle);

        String existingDescription = intent.getStringExtra("existingDescription");
        Log.d(LOG_TAG, "Getting the description: " + existingDescription);
        mDescriptionEditText.setText(existingDescription);
    }
}

当我想使用ViewModel类来从DetailActivity中删除项目时,就会出现问题。

ToDoViewModel

public void delete(ToDo toDo){
    mRepository.delete(toDo);
}

ToDoRepository

    public void delete(ToDo todo){
    new deleteAsyncTask(mToDoDao).execute(todo);
}

private static class deleteAsyncTask extends AsyncTask<ToDo, Void, Void> {

    private ToDoDao mAsyncToDoDao;

    deleteAsyncTask(ToDoDao dao){
        mAsyncToDoDao = dao;
    }

    @Override
    protected Void doInBackground(ToDo... toDos) {
        mAsyncToDoDao.deleteToDo(toDos[0]);
        return null;
    }
}

}

所以我的问题是,是否可以从DetailActivity访问被单击项的数据库条目以填充字段并使用ViewModel活动中的方法删除/更新条目? (除了使用putExtra / hasExtra之外)

谢谢

0 个答案:

没有答案