Então... eu tentei, mas continua não dando. Não sei o que estou fazendo errado.
public List<Unidade> buscaUnidades(Long idEmp) {
List<Unidade> unidades = new ArrayList<>();
Cursor c = dao.getReadableDatabase().rawQuery("SELECT * FROM Unidades JOIN Empresas ON idEmpresa = empresa_id WHERE idEmpresa = '?'", new String[]{idEmp.toString()} );
while (c.moveToNext())
unidades.add(criaUnidade(c));
c.close();
return unidades;
}
E para chamar a lista de unidade:
private void carregaListaDeUnidades() {
UnidadeDAO dao = new UnidadeDAO(this);
Long idEmp = empresa.getId();
List<Unidade> unidades = dao.buscaUnidades(idEmp);
dao.close();
ArrayAdapter<Unidade> adapter = new ArrayAdapter<Unidade>(this, android.R.layout.simple_list_item_1, unidades);
listaUnidades = findViewById(R.id.lista_unidades);
listaUnidades.setAdapter(adapter);
}
O erro:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.hlnengenharia.app, PID: 28568
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.hlnengenharia.app/br.com.hlnengenharia.app.listas.ListaUnidadesActivity}: java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range. The statement has 0 parameters.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2572)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
Caused by: java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range. The statement has 0 parameters.
at android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212)
at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:166)
at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1346)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1285)
at br.com.hlnengenharia.app.dao.UnidadeDAO.buscaUnidades(UnidadeDAO.java:54)
at br.com.hlnengenharia.app.listas.ListaUnidadesActivity.carregaListaDeUnidades(ListaUnidadesActivity.java:81)
at br.com.hlnengenharia.app.listas.ListaUnidadesActivity.onCreate(ListaUnidadesActivity.java:42)
at android.app.Activity.performCreate(Activity.java:6301)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2519)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)