Como faz isso? Não entendi… Eu só quero o id e o nome.
Hum, passando null ele vai retornar todos os campos do banco, então não precisa alterar conforme eu falei no último post.
Lá na classe CarrosCliente, ao invés disto:
IdNome.setText(" "+cliente.getString(cliente.getColumnIndex("_id")));
Use isto:
IdNome.setText(" "+cliente.getString(cliente.getColumnIndex(DbAdapter.KEY_ID)));
Se isto não resolver, só sabendo quais são as colunas da sua tabela no banco de dados pra resolver.
Deu erro ao clicar no item da lista:
08-15 01:41:39.021: E/AndroidRuntime(1426): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.oficinavittorazo/br.com.oficinavittorazo.CarrosCliente}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
Dados da tabela:
private static final String DATABASE_TABLE_CLIENTES = "clientes";
public static final String KEY_ID = "_id";
public static final String KEY_NOME = "nome";
public static final String KEY_ENDERECO = "endereco";
public static final String KEY_TELEFONE = "telefone";
public static final String KEY_CELULAR = "celular";
public static final String KEY_CPF = "cpf";
private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE_CLIENTES + " ("
+ KEY_ID + " integer primary key autoincrement, "
+ KEY_NOME + " text, "
+ KEY_ENDERECO + " text, "
+ KEY_TELEFONE + " text, "
+ KEY_CELULAR + " text, "
+ KEY_CPF + " text);";
Não sei se ajuda, mas o IdNome tá declarado assim:
private TextView IdNome;
humm, mas vc removeu o moveToFirst do cursor… tente assim:
if(mId > 0 && cliente.moveToFirst()){
IdNome.setText(" "+cliente.getString(cliente.getColumnIndex(DbAdapter.KEY_ID)));
}
Legal, trouxe o id, agora to precisando do nome. Consegui com o nome, fiz a mesma coisa. Como deixar o EditText sem edição?
Ora, se para acessar o id você usou:
cliente.getString(cliente.getColumnIndex(DbAdapter.KEY_ID));
Para acessar o nome basta trocar a chave pelo nome:
cliente.getString(cliente.getColumnIndex(DbAdapter.KEY_NOME));
E aí você decide onde colocar este valor (se vai concatenar com o id ou criar outro TextView.
VALEU Wagner,
Funcionou perfeito aqui. O que estava fazendo de errado? Como posso deixar o EditText sem edição, modo leitura?
Wagner, se quiser mais uma tabela é só fazer o mesmo da Tabela Clientes?
private static final String DATABASE_TABLE_CLIENTES = "clientes";
public static final String KEY_ID = "_id";
public static final String KEY_NOME = "nome";
public static final String KEY_ENDERECO = "endereco";
public static final String KEY_TELEFONE = "telefone";
public static final String KEY_CELULAR = "celular";
public static final String KEY_CPF = "cpf";
private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE_CLIENTES + " ("
+ KEY_ID + " integer primary key autoincrement, "
+ KEY_NOME + " text, "
+ KEY_ENDERECO + " text, "
+ KEY_TELEFONE + " text, "
+ KEY_CELULAR + " text, "
+ KEY_CPF + " text);";
Para a tabela Carros faria o mesmo do código acima? E no caso do id do cliente, teria que ter na tabela Carros, ou seja os campos seriam esses:
IdCarro
IdCliente
Placa
Modelo
Cara, quanto ao campo ser não editável, eu não sei como tá isso nas versões atuais do Android, mas há um tempo atrás era uma droga, por que a propriedade editable não funcionava. Tem várias gambiarras pra fazer isso, eu usava essa:
<EditText ...
android:clickable="false"
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false">
</EditText>
O procedimento para outras tabelas é semelhante. Recomendo que ao invés de ter apenas uma classe chamada DbAdapter, você tenha várias: ClienteDbAdapter, CarroDbAdapter, etc. Aí cada uma tem as suas informações.
Beleza, vou setar num TextView, ai não tem como editar. Seria igual o conteúdo somente mudando o nome da tabela? E onde cria o banco?
private static final String DATABASE_NAME = “oficina”;
private static final int DATABASE_VERSION = 1;
Igual pra todas as classes DbAdapter que criar?