Minha dúvida é a seguinte, eu tenho este banco:
@Override
public void onCreate(SQLiteDatabase db) {
String userSQL = "CREATE TABLE Usuarios(usuario_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"usuario_nome TEXT NOT NULL, usuario_profissao TEXT NOT NULL, usuario_email TEXT NOT NULL," +
"usuario_telefone TEXT NOT NULL, usuario_senha TEXT NOT NULL, usuario_confirmaSenha TEXT NOT NULL);";
String empresaSQL = "CREATE TABLE Empresas(empresa_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"empresa_nome TEXT NOT NULL, empresa_segmento TEXT NOT NULL);";
String unidadeSQL = "CREATE TABLE Unidades(unidade_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"unidade_nome TEXT NOT NULL, unidade_cidade TEXT NOT NULL," +
"idEmpresa INTEGER NOT NULL, FOREIGN KEY (idEmpresa) REFERENCES Empresas (empresa_id));";
db.execSQL(userSQL);
db.execSQL(empresaSQL);
db.execSQL(unidadeSQL);
}
E preciso fazer com que quando eu selecione a empresa, a lista de unidades me devolva somente as unidades cadastradas para aquela empresa. Não consegui fazer com que já fosse lido o código da empresa, linkando à unidade, então deixei um campo no cadastro de unidade para que fosse colocado o codigo da empresa (o que sei que não é o ideal). Segue:
public class UnidadeHelper {
private final TextView campoNome;
private final TextView campoCidade;
private final TextView campoEmpresa;
private Unidade u;
public UnidadeHelper(CadUnidadeActivity activity) {
campoEmpresa = activity.findViewById(R.id.cadUnidade_empresa);
campoNome = activity.findViewById(R.id.cadUnidade_nome);
campoCidade = activity.findViewById(R.id.cadUnidade_cidade);
u = new Unidade();
}
public Unidade pegaUnidade() {
u.setIdEmpresa(Long.valueOf(campoEmpresa.getText().toString()));
u.setNome(campoNome.getText().toString());
u.setCidade(campoCidade.getText().toString());
return u;
}
}
public class UnidadeDAO implements Closeable {
private HelperDAO dao;
private Context context;
protected static final String UNIDADES = "Unidades";
protected static final String ID = "unidade_id";
protected static final String NOME = "unidade_nome";
protected static final String CIDADE = "unidade_cidade";
protected static final String ID_EMPRESA = "idEmpresa";
public UnidadeDAO(Context context) {
this.dao = new HelperDAO(context);
this.context = context;
}
@Override
public void close() {
dao.close();
}
public void insere(Unidade unidade) {
ContentValues values = new ContentValues();
values.put(ID_EMPRESA, unidade.getIdEmpresa());
values.put(NOME, unidade.getNome());
values.put(CIDADE, unidade.getCidade());
dao.getWritableDatabase().insert(UNIDADES, null, values);
}
public List<Unidade> buscaUnidades() {
List<Unidade> unidades = new ArrayList<>();
Cursor c = dao.getReadableDatabase().rawQuery("SELECT unidade_nome, unidade_cidade FROM Unidades WHERE idEmpresa='?'", null);
while (c.moveToNext())
unidades.add(criaUnidade(c));
c.close();
return unidades;
}
private Unidade criaUnidade(Cursor c){
Unidade u = new Unidade();
u.setId(c.getLong(c.getColumnIndex(ID)));
u.setNome(c.getString(c.getColumnIndex(NOME)));
u.setCidade(c.getString(c.getColumnIndex(CIDADE)));
u.setIdEmpresa(c.getLong(c.getColumnIndex(ID_EMPRESA)));
return u;
}
}
public class ListaUnidadesActivity extends AppCompatActivity {
public static final String TITULO_APPBAR = "Unidades";
Button unidadeNovo;
ListView listaUnidades;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_unidades);
setTitle(TITULO_APPBAR);
unidadeNovo = findViewById(R.id.unidade_novo);
unidadeNovo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent vaiParaCadUnidade = new Intent(ListaUnidadesActivity.this, CadUnidadeActivity.class);
startActivity(vaiParaCadUnidade);
}
});
UnidadeDAO dao = new UnidadeDAO(this);
List<Unidade> unidades = dao.buscaUnidades();
dao.close();
listaUnidades = findViewById(R.id.lista_unidades);
ArrayAdapter<Unidade> adapter = new ArrayAdapter<Unidade>(this, android.R.layout.simple_list_item_1, unidades);
listaUnidades.setAdapter(adapter);
}
}
Como devo implementar?