Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

SELECT's no SQLITE

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?

1 resposta
solução!

Já consegui.