Ola a todos, tenho uma aplicação que busca todos os contatos que tenho e me retorna o nome em um spinner, e agora preciso pegar este nome que esta no spinner e não esta funcionando.
Codigo pra retornar os contatos…
public void pegaContatos(){
String[] PROJECTION = new String[] {
People._ID, People.NAME
};
Uri contacts = People.CONTENT_URI;
Spinner contactsSpinner = (Spinner) findViewById(R.id.sp_cliente);
Cursor contactsCursor = managedQuery(contacts,
PROJECTION, // Which columns to return
null, // Which rows to return (all rows)
null, // Selection arguments (none)
// Put the results in ascending order by name
People.NAME + " ASC");
SimpleCursorAdapter sca = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item,contactsCursor, new String[] {People.NAME}, new int[] {android.R.id.text1} );
sca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
contactsSpinner.setAdapter(sca);
}
Codigo para tentar pegar o nome que esta no spinner(sp_cliente)
spcliente = (Spinner) findViewById(R.id.sp_cliente);
spcliente.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String nsvNome = spcliente.getSelectedItem().toString();
Log.w("Cliente",nsvNome);
}
public void onNothingSelected(AdapterView<?> adapterView) {
return;
}
});
No log aparece isto em vez do nome do contato…
01-03 17:23:32.069: W/Cliente(4271): android.content.ContentResolver$CursorWrapperInner@40539528
O primeiro int do metodo onItemSelected é a posição do item clicado,
esta posição é a mesma do contato gravado na Adapterlist usado na spinner.
creio que um sca.getItem(i) dentro do onItemSelected resolva
[quote=fabriciov]O primeiro int do metodo onItemSelected é a posição do item clicado,
esta posição é a mesma do contato gravado na Adapterlist usado na spinner.
creio que um sca.getItem(i) dentro do onItemSelected resolva
[/quote]
Erro:
sca cannot be resolved
[quote=fabriciov]declare na classe:
Declarei a classe, mas…
01-04 10:34:08.779: E/AndroidRuntime(8082): FATAL EXCEPTION: main
01-04 10:34:08.779: E/AndroidRuntime(8082): java.lang.NullPointerException
01-04 10:34:08.779: E/AndroidRuntime(8082): at personal.tech.Atendimento$1.onItemSelected(Atendimento.java:70)
01-04 10:34:08.779: E/AndroidRuntime(8082): at android.widget.AdapterView.fireOnSelected(AdapterView.java:871)
01-04 10:34:08.779: E/AndroidRuntime(8082): at android.widget.AdapterView.access$200(AdapterView.java:42)
01-04 10:34:08.779: E/AndroidRuntime(8082): at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:837)
01-04 10:34:08.779: E/AndroidRuntime(8082): at android.os.Handler.handleCallback(Handler.java:587)
01-04 10:34:08.779: E/AndroidRuntime(8082): at android.os.Handler.dispatchMessage(Handler.java:92)
01-04 10:34:08.779: E/AndroidRuntime(8082): at android.os.Looper.loop(Looper.java:130)
01-04 10:34:08.779: E/AndroidRuntime(8082): at android.app.ActivityThread.main(ActivityThread.java:3835)
01-04 10:34:08.779: E/AndroidRuntime(8082): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 10:34:08.779: E/AndroidRuntime(8082): at java.lang.reflect.Method.invoke(Method.java:507)
01-04 10:34:08.779: E/AndroidRuntime(8082): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
01-04 10:34:08.779: E/AndroidRuntime(8082): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
01-04 10:34:08.779: E/AndroidRuntime(8082): at dalvik.system.NativeStart.main(Native Method)
fabriciov, se tiver skype add ae:
marcianovc
Estou no trabalho, não tem skype aqui.
Estava pesquisando e por surpresa achei o exemplo que provavelmente você se baseou ( http://stackoverflow.com/questions/4070313/android-displaying-contact-names-in-a-spinner ),
há um comentário logo abaixo : Isso não é suportado em SDK 2.0+
e duvido que esteja trabalhando com versão inferior ao Ecclair ;p
Uma opção é fazer uma arraylist igual dos contatos e trabalhar sobre ela
aqui tem um exemplo de como fazer:
http://dev.schmid.pro/android/get-contacts-on-android-2-0
e não esqueça de adicionar a permissão no manifest, pelo menos eu sempre esqueço hehe
vo tenta aq , se der certo aviso ae blz…
obrigado por eqto…
[quote=marcianovc]vo tenta aq , se der certo aviso ae blz…
obrigado por eqto…[/quote]
Consegui resolver, segue o codigo:
[code] public void loadSpinnerClientes(){
List contatos = new ArrayList();
contatos.add(“Novo”);
try {
String[] PROJECTION = new String[] { Contacts._ID,
Contacts.DISPLAY_NAME, Phone.NUMBER };
Cursor c = managedQuery(Phone.CONTENT_URI, PROJECTION, null, null, null);
if (c.moveToFirst()) {
String clsPhonename = null;
String clsphoneNo = null;
do {
clsPhonename = c.getString(c.getColumnIndex(Contacts.DISPLAY_NAME));
clsphoneNo = c.getString(c.getColumnIndex(Phone.NUMBER));
clsphoneNo.replaceAll("\\D","");
clsPhonename = clsPhonename.replaceAll("&","");
clsPhonename.replace("|","");
String clsPhoneName = clsPhonename.replace("|", "");
System.out.println(clsPhoneName);
contatos.add(clsPhoneName);
} while (c.moveToNext());
}
} catch (Exception e) {
e.printStackTrace();
}
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, contatos);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spcliente.setAdapter(dataAdapter);
}[/code]
E para pegar o texto que estiver selecionado no spinner:
Resolvidooooo…
Poderia me ajudar, estou com dúvidas para utilizar o spinner.
Está mostrando assim: Preciso também que mostre o id do item que está no banco de dados, era pra mostrar 1 no id e está mostrando 0 e no nome o que está abaixo:
06-30 16:45:40.636: I/Nome selecionado no spinner(407): Nome: android.database.sqlite.SQLiteCursor@44f72570
final Spinner spn = (Spinner) findViewById(R.id.spinner1);
String nomeString = Procurar.getText().toString();
Cursor cursor;
db.open();
cursor = db.getClientePorNome(nomeString);
cursor.moveToFirst();
SimpleCursorAdapter adaptador = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cursor,
new String[] { DbAdapter.KEY_NOME },
new int[] { android.R.id.text1 });
adaptador.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
spn.setAdapter(adaptador);
spn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v, int posicao, long ids) {
int index = parent.getSelectedItemPosition();
final String vnome = parent.getSelectedItem().toString();
Log.i("Clicou no spinner", "Item: " +index);
Log.i("Nome selecionado no spinner", "Nome: " +vnome);
Toast.makeText(Lista.this, "ID Selecionado: " + index, Toast.LENGTH_LONG).show();
Toast.makeText(Lista.this, "Nome: " + vnome, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
db.close();
}