>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Spinner (gravar item selecionado na base de dados)


Bom dia!
Eu tenho um spinner em que o conteudo é uma lista de 1 a 5, e ao selecionar um item qualquer queria gravar na base de dados!


package com.example.tougle.app;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;


//http://pulse7.net/android/android-spinner-dropdown-list-example/

public class MainActivity extends ActionBarActivity {

Spinner iniciativa_spinner;
Button btOK;

private DBAdapter datasource;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);

datasource = new DBAdapter(this);

iniciativa_spinner = (Spinner) findViewById(R.id.iniciativa_spinner);

iniciativa_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView adapter, View v,
int position, long id) {

String ValorSelecionado = adapter.getItemAtPosition(position).toString();

Toast.makeText(adapter.getContext(), "Selecionou: " + ValorSelecionado,
Toast.LENGTH_LONG).show();
}

@Override
public void onNothingSelected(AdapterView arg0) {
// TODO Auto-generated method stub

}
});

btOK = (Button) findViewById(R.aluno.btOK);

btOK.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
datasource.open();

Session s = datasource.createSession( //AQUI NÃO SEI COMO CHAMAR A SPINNER PARA GUARDAR O VALOR);
datasource.close();
AlertDialog.Builder dialogo = new
AlertDialog.Builder(MainActivity.this);
dialogo.setTitle("Aviso");
dialogo.setMessage("Nível de iniciativa:" + s.getId());
dialogo.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
});
dialogo.show();
}
});
}
}



Alguma ideia ou algum tutorial que me possa ajudar nesta duvida?
Agradeço a atenção.



13 Respostas


ola cristiana

mostra p mim... a classe q ta o metodo datasource....




DBAdapter.java


public class DBAdapter {

private SQLiteDatabase database;
private DbHelper dbHelper;
private String[] allColumnsSession = { DbHelper.ID, DbHelper.NIVELINICIATIVA };


public DBAdapter(Context context) {
dbHelper = new DbHelper(context);
}

public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}

public void close() {
dbHelper.close();
}

//Session
public Session createSession(int niveliniciativa){
ContentValues values = new ContentValues();

values.put(dbHelper.NIVELINICIATIVA,niveliniciativa);


long insertId = database.insert(dbHelper.TABLE_SESSION, null, values);
// To show how to query
Cursor cursor = database.query(dbHelper.TABLE_SESSION, allColumnsSession, dbHelper.ID " = " insertId, null,null, null, null);
cursor.moveToFirst();
return cursorToSession(cursor);
}

public void EliminaSession (int idSession){
//database.delete(DB.TABLE_NAME, "id=?", new String [] {Integer.toString(idContacto)});
database.delete(DbHelper.TABLE_SESSION, DbHelper.ID " = " idSession, null);
}

private Session cursorToSession(Cursor cursor) {
Session session = new Session(cursor.getLong(0), cursor.getInt(1));
return session;
}

public Cursor getSessions(){
Cursor cursor = database.rawQuery("select _id, niveliniciativa from session", null);
return cursor;
}

public Session getSession (int idSession){
Cursor cursor = database.query(dbHelper.TABLE_SESSION, allColumnsSession, dbHelper.ID " = " idSession, null, null, null, null);
cursor.moveToFirst();
return cursorToSession(cursor);
}
}




DbHelper.java


public class DbHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION =1;
private static final String DATABASE_NAME = "obs.db";

//Session
public static final String TABLE_SESSION = "session";

//Campos da tabela Session
public static final String ID = "_id";
public static final String NIVELINICIATIVA = "niveliniciativa";

private static final String DATABASE_CREATE_SESSION = "create table "
TABLE_SESSION "(" ID " integer primary key autoincrement, "
NIVELINICIATIVA " integer not null);";

public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE_SESSION);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(DbHelper.class.getName(), "Upgrading database from version " oldVersion " to " newVersion ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " TABLE_SESSION);

onCreate(db);
}
}




MainActivity.java


public class MainActivity extends ListActivity {

ListAdapter adapter; //permite mostrar várias informações em uma linha do ListView
DBAdapter datasource; //permite fazer operações na base de dados

Spinner iniciativa_spinner;
Button btOK;

//private DBAdapter datasource;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);

datasource = new DBAdapter(this);

datasource.open();
Cursor cursor = datasource.getSessions();

String[] columns = new String[] { "niveliniciativa" };
int[] to = new int[] { R.id.niveliniciativa};
adapter = new SimpleCursorAdapter(
this,
R.layout.nivel_list_item,
cursor,
columns,
to);
this.setListAdapter(adapter);
datasource.close();

iniciativa_spinner = (Spinner) findViewById(R.id.iniciativa_spinner);

iniciativa_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView adapter, View v,
int position, long id) {

String ValorSelecionado = adapter.getItemAtPosition(position).toString();

Toast.makeText(adapter.getContext(), "Selecionou: " ValorSelecionado,
Toast.LENGTH_LONG).show();

}

@Override
public void onNothingSelected(AdapterView arg0) {
// TODO Auto-generated method stub

}
});

btOK = (Button) findViewById(R.aluno.btOK);

btOK.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
datasource.open();

int iniciativa = 0 ;

switch(iniciativa_spinner.getSelectedItemPosition()) {
case 1: iniciativa = 1; break;
case 2: iniciativa = 2; break;
case 3: iniciativa = 3; break;
case 4: iniciativa = 4; break;
}

Session s = datasource.createSession(iniciativa);
datasource.close();
AlertDialog.Builder dialogo = new
AlertDialog.Builder(MainActivity.this);
dialogo.setTitle("Aviso");
dialogo.setMessage("Nível de iniciativa:" // s.getId()
String.valueOf(iniciativa));
dialogo.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//finish();
}
});
dialogo.show();
}
});
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();

datasource.open();
Cursor cursor = datasource.getSessions();
String[] columns = new String[] { "niveliniciativa" };
int[] to = new int[] { R.id.niveliniciativa};
adapter = new SimpleCursorAdapter(
this,
R.layout.nivel_list_item,
cursor,
columns,
to);
this.setListAdapter(adapter);
datasource.close();
}
}



Durante a tarde estive a fazer pesquisas e fiz algumas alterações, e está a gravar, mas grava a posição e não o item, não sei se esta correto desta forma.




strings.xml





tougle
Hello world!
Settings

Nível de iniciativa
Nível de iniciativa

1
2
3
4


OK







Bom dia!
Desculpa mas não percebi a questão!




bom dia...

kd os itens q vc quer q apareça.....??


é aquele la 1 , 2 ,3 ,4...




Ah, sim o que está na string.xml 1,2,3,4 é o que aparece no spinner




Ola! boa tarde!
Há forma de no MainActivity.java em


btOK = (Button) findViewById(R.aluno.btOK);

btOK.setOnClickListener(new View.OnClickListener() {
...

Session s = datasource.createSession(iniciativa);



buscar a variavel ValorSelecionado que esta em
iniciativa_spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

e susbstituir "iniciativa" por "ValorSelecionado", visto que esta variável está a mandar o item corretamente e "iniciativa" está me a mandar a posição.




mas eu ainda naum entendi... vc qr colocar 1,2,3,4.???




Eu tenho 1,2,3,4 como poderia ter outros elementos...eu quero selecionar um só elemento entre 1 a 4... e quero que esse numero selecionado seja gravado na base de dados.




Ola Cristiana

dê uma olhada nesse site aqui

http://vogella.com/tutorials/AndroidListView/article.html