Problema ao fazer a inserção de dados no SQLite e atualizar a RecyclerView

Estou tento problemas no meu banco SQLite, onde eu criei um método no meu DatabaseController.java que se chama recuperarUltimoDigitado() [ Onde esse método recupera o valor inserido e logo atualiza a lista ], no entanto, isso gera um erro na primeira tentativa de inserir os dados, mas ao abrir novamente o app e adicionar um novo dado, apresenta uma repetição na listagem do mesmo dado anteriormente inserido na RecyclerView e, após isso, os próximos dados são inseridos e listados normalmente, mas eu gostaria de saber o que eu poderia fazer para que isso seja resolvido e funcione corretamente…

public class DatabaseController {

private DatabaseInit databaseInit; private SQLiteDatabase sql;  public DatabaseController(Context context) {     databaseInit = new DatabaseInit(context);     sql = databaseInit.getWritableDatabase(); }  public long inserir(Livro livro){     ContentValues values = new ContentValues();      values.put(Const.AUTOR_LIVRO, livro.getAutor());     values.put(Const.EDITORA_LIVRO, livro.getEditora());     values.put(Const.TITULO_LIVRO, livro.getTitulo());      return sql.insert(Const.TABLE_NAME, null, values);  }  public ArrayList<Livro> recuperar(){     ArrayList<Livro> livros = new ArrayList<>();      Cursor cursor = sql.rawQuery("SELECT " +             Const.TITULO_LIVRO  +  "," +             Const.EDITORA_LIVRO  +  "," +             Const.AUTOR_LIVRO  + " FROM "+             Const.TABLE_NAME , null);      int indexColumnTitle = cursor.getColumnIndex(Const.TITULO_LIVRO);     int indexColumnAuthor = cursor.getColumnIndex(Const.AUTOR_LIVRO);     int indexColumnEditor = cursor.getColumnIndex(Const.EDITORA_LIVRO);      while (cursor.moveToNext()){         Livro livro = new Livro();         livro.setTitulo(cursor.getString(indexColumnTitle));         livro.setEditora(cursor.getString(indexColumnEditor));         livro.setAutor(cursor.getString(indexColumnAuthor));         livros.add(livro);     }      cursor.close();      return livros; }  public Livro recuperarUltimoDigitado(){      Cursor cursor = sql.rawQuery("SELECT * FROM " + Const.TABLE_NAME + " ORDER BY ID DESC", null);      int indexColumnTitle = cursor.getColumnIndex(Const.TITULO_LIVRO);     int indexColumnAuthor = cursor.getColumnIndex(Const.AUTOR_LIVRO);     int indexColumnEditor = cursor.getColumnIndex(Const.EDITORA_LIVRO);      if(cursor.moveToFirst()){         int id = cursor.getInt(cursor.getColumnIndex("id"));         String titulo = cursor.getString(indexColumnTitle);         String autor = cursor.getString(indexColumnAuthor);         String editora = cursor.getString(indexColumnEditor);         cursor.close();         return new Livro(id, titulo, autor, editora);     }      return null; } 

}

Método no adaptador para notificar a atualização da lista:

public void adicionarLiivro(Livro livro){     livros.add(livro);     notifyItemInserted(getItemCount()); } 

Activity Principal:

public class MainActivity extends AppCompatActivity {  private EditText autor, titulo, editora; private DatabaseController controller; private Button btn; private RecyclerView recyclerView; private ArrayList<Livro> livros; private ArrayList<Livro> livrosFiltrados = new ArrayList<>();   @Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);    autor = findViewById(R.id.autorId);   titulo = findViewById(R.id.tituloId);   editora = findViewById(R.id.editoraId);   controller = new DatabaseController(this);   livros = controller.recuperar();   livrosFiltrados.addAll(livros);   recyclerView = findViewById(R.id.rcyId);    recyclerView.setLayoutManager(new LinearLayoutManager(this));    final AdapterListBooks adapter = new AdapterListBooks(livrosFiltrados);   recyclerView.setAdapter(adapter);    btn = findViewById(R.id.btnId);    btn.setOnClickListener(new View.OnClickListener() {       @Override       public void onClick(View v) {            Livro livro = new Livro();            Livro livroRertono = controller.recuperarUltimoDigitado();           adapter.adicionarLiivro(livroRertono);             livro.setAutor(autor.getText().toString());           livro.setTitulo(titulo.getText().toString());           livro.setEditora(editora.getText().toString());            long id = controller.inserir(livro);            Toast.makeText(MainActivity.this, "Livro inserido com o Id: " + id, Toast.LENGTH_SHORT).show();       }   });  } 

}

Acredito que o foco do problema seja no método recuperarUltimoDigitado(). Obg desde já pela a ajuda…