Relacionamentos 1------------n?

Bom dia Galera.
Feliz dias das Crianças.

Estou fazendo um CRUD, apos esse CRUD tiver pronto, vou sincronizar os dados com webservice, e atualizar a base local, depois o USUARIO pode trabalhar off, e depois iniciar novamente atualização com servidor. de inicio estou usando o sqlit, mas vai ser NEO4J.

Para título de teste to fazendo

Cliente-----------------------------Produto----------------------Pedido

Estou com problemas para cadastrar as FK de pedidos.

uma luz ?


package br.com.gdroid;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHandler extends SQLiteOpenHelper {
    // banco Version
    private static final int DATABASE_VERSION = 1;
 
    // banco nome
    private static final String DATABASE_NAME = "gdroid_teste";

    
    // nome da tabela CLIENTE
	private static final String TABLE_CLIENTE = "cliente";
    private static final String KEY_ID_CLIENTE = "id_cliente";
    private static final String KEY_NAME_CLIENTE = "nome_cliente";
    

    // nome da tabela PRODUTO
    private static final String TABLE_PRODUTO = "produto";
	private static final String KEY_ID_PRODUTO = "id_produto";
	private static final String KEY_NAME_PRODUTO = "nome_produto";

   // nome da tabela PEDIDOS
    private static final String TABLE_PEDIDO = "pedido";
	private static final String KEY_ID_PEDIDO = "id_pedido";
	private static final String KEY_NAME_PEDIDO = "nome_pedido";
	private static final String FK_PRODUTO = "fk_produto";
	private static final String FK_CLIENTE = "fk_fliente";
    
    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
 
    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
    	// gerando as tabelas
    	String CREATE_CATEGORIES_TABLE_PRODUTO = "CREATE TABLE " + TABLE_PRODUTO + "("
    													 + KEY_ID_PRODUTO + " INTEGER PRIMARY KEY,"
    													 + KEY_NAME_PRODUTO + " TEXT)";

    	
		String CREATE_CATEGORIES_TABLE_CLIENTE = "CREATE TABLE " + TABLE_CLIENTE + "("
				 										+ KEY_ID_CLIENTE + " INTEGER PRIMARY KEY,"
				 										+ KEY_NAME_CLIENTE + " TEXT)";
    	
    	
		String CREATE_CATEGORIES_TABLE_PEDIDO = "CREATE TABLE " + TABLE_PEDIDO + "("
				 										+ KEY_ID_PEDIDO + " INTEGER PRIMARY KEY,"
				 										+ FK_PRODUTO + " INTEGER,"
				 										+ FK_CLIENTE + " INTEGER,"
				 										+ KEY_NAME_PEDIDO + " TEXT)";
    	
    	db.execSQL(CREATE_CATEGORIES_TABLE_PRODUTO);
    	db.execSQL(CREATE_CATEGORIES_TABLE_CLIENTE);
    	db.execSQL(CREATE_CATEGORIES_TABLE_PEDIDO);
    }
 
    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_PRODUTO);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CLIENTE);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_PEDIDO);
 
        // Criando as tabelas
        onCreate(db);
    }
    
    /**
     * Inserir valores na tabela cliente
     * */
    public void insertCliente(String cliente){
    	//abri para escrita
    	SQLiteDatabase db = this.getWritableDatabase();
    	
    	ContentValues values = new ContentValues();
    	//campo nome do cliente
    	values.put(KEY_NAME_CLIENTE, cliente);
    	//tabela cliente
        db.insert(TABLE_CLIENTE, null, values);
        db.close(); // fecha conectividade com banco
    }
    
    /**
     * Inserir valores na tabela produto
     * */
    public void insertProduto(String produto){
    	//abri para escrita
    	SQLiteDatabase db = this.getWritableDatabase();
    	
    	ContentValues values = new ContentValues();
    	//campo nome do produto
    	values.put(KEY_NAME_PRODUTO, produto);
    	//tabela cliente
        db.insert(TABLE_PRODUTO, null, values);
        db.close(); // fecha conectividade com banco
    }
    
    
   //SELECT para clientes
   public List<String> getAllCliente(){
    	List<String> clientes = new ArrayList<String>();
    	
        // Select todos Query
        String selectQuery = "SELECT  * FROM " + TABLE_CLIENTE;
     
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
     
        // looping adiciona em todas as colunas
        if (cursor.moveToFirst()) {
            do {
            	clientes.add(cursor.getString(1));
            } while (cursor.moveToNext());
        }
        
        // fecha connection
        cursor.close();
        db.close();
    	
    	//inicia
    	return clientes;
    }
   //SELECT para produto
   public List<String> getAllProduto(){
    	List<String> produtos = new ArrayList<String>();
    	
        // Select todos Query
        String selectQuery = "SELECT  * FROM " + TABLE_PRODUTO;
     
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
     
        // looping adiciona em todas as colunas
        if (cursor.moveToFirst()) {
            do {
            	produtos.add(cursor.getString(1));
            } while (cursor.moveToNext());
        }
        
        // fecha connection
        cursor.close();
        db.close();
    	
    	//inicia
    	return produtos;
    }

}
package br.com.gdroid;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends Activity implements OnItemSelectedListener {

	// Spinner elemento cleinte
	Spinner spinnerCliente;
	// Spinner elemento produto
	Spinner spinnerProduto;
		
	// Add butao cliente
	Button btnAddCliente;
	
	// Add butao cliente
	Button btnAddProduto;

	// Input texto cliente
	EditText inputCliente;

	// Input texto produto
	EditText inputProduto;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// Spinner elemento cliente
		spinnerCliente = (Spinner) findViewById(R.id.spinnerCliente);

		// Spinner elemento produto
		spinnerProduto = (Spinner) findViewById(R.id.spinnerProduto);

		
		// add botao
		btnAddCliente = (Button) findViewById(R.id.btnadd_cliente);
		
		// add botao
		btnAddProduto = (Button) findViewById(R.id.btnadd_produto);

		// new label input campo
		inputCliente = (EditText) findViewById(R.id.input_cliente);

		// new label input campo
		inputProduto = (EditText) findViewById(R.id.input_produto);

		
		// Spinner click listener
		spinnerCliente.setOnItemSelectedListener(this);

		// Spinner click listener
		spinnerProduto.setOnItemSelectedListener(this);

		// carrega spinner dados do banco
		loadSpinnerDataCliente();
		loadSpinnerDataProduto();
		
		btnAddProduto.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {

				String produto = inputProduto.getText().toString();

				if (produto.trim().length() > 0) {
					
					DatabaseHandler db = new DatabaseHandler(getApplicationContext());

                    //inserir dados no banco
					db.insertProduto(produto);

					//inputProduto.setText("");

					InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
					imm.hideSoftInputFromWindow(inputProduto.getWindowToken(), 0);
                    //carrega os dados para o spinner
					loadSpinnerDataProduto();
				} else {
					Toast.makeText(getApplicationContext(), "Por favor Digite um Produto",Toast.LENGTH_SHORT).show();
				}

			}
		});
		
		
		btnAddCliente.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {

				String cliente = inputCliente.getText().toString();

				if (cliente.trim().length() > 0) {
					
					DatabaseHandler db = new DatabaseHandler(getApplicationContext());

                    //inserir dados no banco
					db.insertCliente(cliente);

					//inputCliente.setText("");

					InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
					imm.hideSoftInputFromWindow(inputCliente.getWindowToken(), 0);
                    //carrega os dados para o spinner
					loadSpinnerDataCliente();
				} else {
					Toast.makeText(getApplicationContext(), "Por favor Digite um Nome",Toast.LENGTH_SHORT).show();
				}

			}
		});
	}
	
	
    //metodo carregar o spinner cliente 
	private void loadSpinnerDataCliente() {
		
		DatabaseHandler db = new DatabaseHandler(getApplicationContext());

		
		List<String> cliente = db.getAllCliente();

		
		ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, cliente);

		
		dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		
		spinnerCliente.setAdapter(dataAdapter);
	}

    //metodo carregar o spinner produto
	private void loadSpinnerDataProduto() {
		
		DatabaseHandler db = new DatabaseHandler(getApplicationContext());

		
		List<String> produto = db.getAllProduto();

		
		ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, produto);

		
		dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		
		spinnerProduto.setAdapter(dataAdapter);
	}

	/*
	 *Item selecionado no spinner 
	 * 
	 * */
	@Override
	public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
		
		String cliente = parent.getItemAtPosition(position).toString();
		
		Toast.makeText(parent.getContext(), "Você Selecionou: " + cliente, Toast.LENGTH_LONG).show();

	}

	@Override
	public void onNothingSelected(AdapterView<?> arg0) {

	}
}

você quer pegar no caso a FK do cliente selecionado do spinner ?

Valeio Bezerra Boa Tarde !

Cara é isso mesmo !

na tela de pedidos tenho 2 spinner. cliente e produtos, são 2 fks…

quero jogar esses valores na tabela pedidos…

CLIENTE --------PRODUTO-----------------PEDIDOS
id nome id nome id fk_cliente fk_produto

já fiz o cadastro de cliente e cadastro de produtos…

Agora eu listo em 2 spinner cliente e pdotudo para ser cadastrado em Pedidos…

Assim vou ter 1 cliente com n produtos em 1 pedido

O que eu quero fazer é isso.
Falta so fazer a parte de salvar os valores dos Spinner nos pedidos.

abraço e obrigado !