Seguinte, estou desenvolvendo uma aplicação para aprender e tal, e ela consiste basicamente dessa maneira: Assim que o usuário abre o aplicativo mostra uma tela onde ele pode adicionar algumas lojas. O usuário clica no botão de adicionar loja e é levado a uma tela onde ele colocará as informações sobre essa loja. Assim que ele colocar as informações, o usuário clica em “cadastrar loja” e essa loja é adicionada ao banco de dados do programa e aparece naquela primeira tela em uma ListView. Quando o usuário clicar no nome da loja ele é levado até uma outra tela onde será listado os produtos e onde ele irá cadastrar os produtos dessa loja. O processo fica semelhante ao de adicionar empresa. Eu consegui desenvolver o aplicativo até o momento em que o usuário está na tela para adicionar os produtos na loja, só que eu não sei como fazer para cadastrar os produtos e que esses produtos fiquem apenas nas lojas em que eles forem cadastrados. Não sei de deu pra entender mas é basicamente isso. Desde já, agradeço.
Como insiro dados no banco de dados desta maneira?
14 Respostas
Você quer cadastrar os produtos de acordo com a loja que cadastrar e escolher depois de cadstrar?
É tipo… cadastro a loja, ai nessa loja eu cadastro os produtos que essa loja tem. Entendeu? Eu já consegui montar o cadastro das lojas e a pagina em que aparece os produtos, mas n sei fazer pra cadastrar os produtos para cada loja
Como ta seu banco de dados?
Acho que você está com dificuldade de inserir na loja recém cadastrada por não ter o id dela. Corrija-me se eu estiver errado.
Se for isso, a inserção no banco retorna o id da tupla inserida. Dessa forma, o id retornado com a inserção da loja pode ser usado para inserir os produtos nessa loja.
Eu estou na faculdade agora, então não tem como postar o meu projeto agora, mas estou enviando os códigos do projeto que eu peguei como base e exemplo. Segue abaixo:
DBAdapter.java:
package com.contactos;
import java.io.ByteArrayOutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
public class DBAdapter {
private SQLiteDatabase database;
private DbHelper dbHelper;
private String[] allColumns = { DbHelper.ID, DbHelper.NOME, DbHelper.EMAIL, DbHelper.TELEFONE, DbHelper.FOTO};
public DBAdapter(Context context) {
dbHelper = new DbHelper(context);
}
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public Contacto createContacto(String nome, String email, String telefone, Bitmap foto) {
ContentValues values = new ContentValues();
values.put(dbHelper.NOME, nome);
values.put(dbHelper.EMAIL,email);
values.put(dbHelper.TELEFONE,telefone);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
foto.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] photo = baos.toByteArray();
values.put(dbHelper.FOTO, photo);
long insertId = database.insert(dbHelper.TABLE_NAME, null, values);
// To show how to query
Cursor cursor = database.query(dbHelper.TABLE_NAME, allColumns, dbHelper.ID + " = " + insertId, null,null, null, null);
cursor.moveToFirst();
return cursorToContacto(cursor);
}
public void EliminaContacto (int idContacto){
//database.delete(DB.TABLE_NAME, "id=?", new String [] {Integer.toString(idContacto)});
database.delete(DbHelper.TABLE_NAME, DbHelper.ID + " = " + idContacto, null);
}
private Contacto cursorToContacto(Cursor cursor) {
byte[] blob = cursor.getBlob(cursor.getColumnIndex(dbHelper.FOTO));
Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length);
Contacto contacto = new Contacto(cursor.getLong(0),cursor.getString(1),cursor.getString(2), cursor.getString(3),bmp);
return contacto;
}
public Cursor getContactos(){
Cursor cursor = database.rawQuery("select _id, nome,telefone,foto from contactos2", null);
return cursor;
}
public Contacto getContacto (int idContacto){
Cursor cursor = database.query(dbHelper.TABLE_NAME, allColumns, dbHelper.ID + " = " + idContacto, null,null, null, null);
cursor.moveToFirst();
return cursorToContacto(cursor);
}
}
NovoContacto.java:
package com.contactos;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
public class NovoContacto extends Activity {
Button btadicionar;
Button btTirarFoto;
EditText edtNome;
EditText edtEmail;
EditText edtTelefone;
ImageView iv;
final static int cameraData = 0;
private DBAdapter datasource;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.novocontacto);
datasource = new DBAdapter(this);
edtNome = (EditText) findViewById(R.novocontacto.ednome);
edtEmail = (EditText) findViewById(R.novocontacto.edEmail);
edtTelefone = (EditText) findViewById(R.novocontacto.edTelefone);
btadicionar = (Button) findViewById(R.novocontacto.btadicionar);
btTirarFoto = (Button) findViewById(R.novocontacto.tirarFoto);
iv = (ImageView) findViewById(R.novocontacto.ivReturnedPic);
btTirarFoto.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i= new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i,cameraData);
}
});
btadicionar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
datasource.open();
Contacto c = datasource.createContacto(edtNome.getText().toString(), edtEmail.getText().toString(), edtTelefone.getText().toString(),loadBitmapFromView(iv));
datasource.close();
AlertDialog.Builder dialogo = new
AlertDialog.Builder(NovoContacto.this);
dialogo.setTitle("Aviso");
dialogo.setMessage("Contacto:" + c.getNome());
dialogo.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
});
dialogo.show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if(resultCode == RESULT_OK){
Bundle extras = data.getExtras();
Bitmap bmp = (Bitmap) extras.get("data");
iv.setImageBitmap(bmp);
}
super.onActivityResult(requestCode, resultCode, data);
}
public static Bitmap loadBitmapFromView (View v) {
Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}
}
Contacto.java:
package com.contactos;
import android.graphics.Bitmap;
public class Contacto {
private long _id;
private String nome;
private String email;
private String telefone;
private Bitmap foto;
public Contacto(long id, String nome, String email,String telefone){
this._id=id;
this.nome=nome;
this.email=email;
this.telefone=telefone;
}
public Contacto(long id, String nome, String email,String telefone, Bitmap bmp){
this._id=id;
this.nome=nome;
this.email=email;
this.telefone=telefone;
this.foto = bmp;
}
public Bitmap getFoto(){
return foto;
}
public void setFoto(Bitmap btm){
this.foto= btm;
}
public long getId() {
return _id;
}
public void setId(long id) {
this._id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.nome = email;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.nome = telefone;
}
}
ContactosActivity:
package com.contactos;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class ContactosActivity extends ListActivity {
ListAdapter adapter;
DBAdapter datasource;
Button btNovoContacto;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
datasource = new DBAdapter(this);
datasource.open();
Cursor cursor = datasource.getContactos();
String[] columns = new String[] { "nome","telefone" };
int[] to = new int[] { R.id.nome, R.id.telefone};
adapter = new SimpleCursorAdapter(
this,
R.layout.contacto_list_item,
cursor,
columns,
to);
this.setListAdapter(adapter);
datasource.close();
btNovoContacto = (Button) findViewById(R.id.btNovoContacto);
btNovoContacto.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent novo = new Intent("com.contactos.NovoContacto");
startActivity(novo);
}
});
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
datasource.open();
Cursor cursor = datasource.getContactos();
String[] columns = new String[] { "nome","telefone" };
int[] to = new int[] { R.id.nome, R.id.telefone};
adapter = new SimpleCursorAdapter(
this,
R.layout.contacto_list_item,
cursor,
columns,
to);
this.setListAdapter(adapter);
datasource.close();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Intent intent = new Intent("com.contactos.ContactosDetalhes");
Cursor cursor = (Cursor) adapter.getItem(position);
intent.putExtra("idContacto",cursor.getInt(cursor.getColumnIndex("_id")));
startActivity(intent);
}
}
ContactosDetalhes.java:
package com.contactos;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class ContactosDetalhes extends Activity {
int idContacto;
DBAdapter datasource;
Contacto contacto;
TextView edtNome;
TextView edtEmail;
TextView edtTelefone;
Button btVoltar;
Button btEliminar;
ImageView ivFoto;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.detalhecontacto);
edtNome = (TextView) findViewById(R.lista.txtnome);
edtEmail = (TextView) findViewById(R.lista.txtEmail);
edtTelefone = (TextView) findViewById(R.lista.txtTelefone);
ivFoto = (ImageView) findViewById(R.id.ivFoto);
btEliminar = (Button) findViewById(R.id.btEliminar);
btVoltar = (Button) findViewById(R.lista.btmenu);
carregaDetalhesContacto();
btVoltar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
btEliminar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder dialogo = new AlertDialog.Builder(ContactosDetalhes.this);
dialogo.setTitle("Aviso");
dialogo.setMessage("Eliminar Contacot?");
dialogo.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
dialogo.setPositiveButton("Eliminar",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
datasource.open();
datasource.EliminaContacto(idContacto);
datasource.close();
finish();
}
});
dialogo.show();
}
});
}
private void carregaDetalhesContacto(){
idContacto = getIntent().getIntExtra("idContacto", 0);
datasource = new DBAdapter(this);
datasource.open();
contacto = datasource.getContacto(idContacto);
datasource.close();
ivFoto.setImageBitmap(contacto.getFoto());
edtNome.setText(contacto.getNome());
edtEmail.setText(contacto.getEmail());
edtTelefone.setText(contacto.getTelefone());
}
}
##OBS: A activity NovoContacto.java funciona semelhante a minha activity NovaLoja (que serve pra eu cadastrar uma loja). A activity ContactosDetalhes.java no meu projeto é a activity que controla a tela DA loja, onde o usurário irá inserir os produtos.
Mando sim.
Ok, no aguardo, ok? Vamos ver isso juntos. Vi que mandou o exemplo. Você me mando o que está fazendo?
Ok, recebeu aí?
Recebi o exemplo, pode mandar o projeto que ta fazendo?meu skype é [email removido]
pode me add
posso sim, talvez eu consigo sair da facul daqui a pouco ou à noite, mas eu te mando.
Ok, vc ta usando Actionbar também?
Ok, vc ta usando Actionbar também?Por enquanto não, mas eu irei utilizar sim. Por enquanto eu estou apenas mexendo nessa parte com os bancos de dados, que para mim é mais difícil.
Tendi, manda pra mim então que vamos ver se fazemos juntos isso ai.