Remover posição do ArrayAdapter

Boa tarde a todos;

gostaria de remover posições do meu ArrayAdapter de acordo com um valor em um compo, tentei remover assim.: adpTipoPagamento.remove(adpTipoPagamento.getItem(1));, mas não funcionou e deu um RuntimeException, até pq coloquei logo na linha seguinte onde ele é criado.

Este ArrayAdapter é preenchido com um string-array. Desde já agradeço.

você precisa primeiro pegar a lista que que está no adapter,
depois alterar essa lista como quiser (inserir ou remover itens) e então chamar o método
adpTipoPagamento.notifyDataSetChanged(); que notifica o adapter que seus dados foram alterados.

Obrigado pela dica amigo, mas esta assim.:

spnTipoPagamento = (Spinner) findViewById(R.id.spn_tipo_pagamento); ArrayAdapter adpTipoPagamento = new ArrayAdapter(this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.classificacao_venda)); adpTipoPagamento.remove(adpTipoPagamento.getItem(1)); //erro parece estar aqui adpTipoPagamento.notifyDataSetChanged(); // depois que solicitou ele entrou aqui spnTipoPagamento.setAdapter(adpTipoPagamento);

mas ficou pior, agora aparece o seguinte erro o erro parece estar onde eu removo o item, ele preenche corretamente.:

estou estudando e desenvolvendo agora,e o meu Android parece processar tudo ao contrário, isso é correto?

01-16 08:29:27.484 26775-26775/ws_forca_vendas.josueh.br.vendassigma E/AndroidRuntime: FATAL EXCEPTION: main Process: ws_forca_vendas.josueh.br.vendassigma, PID: 26775 java.lang.RuntimeException: Unable to start activity ComponentInfo{ws_forca_vendas.josueh.br.vendassigma/ws_forca_vendas.josueh.br.vendassigma.ActFazerPedidos}: java.lang.UnsupportedOperationException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391) at android.app.ActivityThread.access$900(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java:5511) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:638) at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java:75) at java.util.AbstractCollection.remove(AbstractCollection.java:229) at android.widget.ArrayAdapter.remove(ArrayAdapter.java:244) at ws_forca_vendas.josueh.br.vendassigma.ActFazerPedidos.onCreate(ActFazerPedidos.java:94) at android.app.Activity.performCreate(Activity.java:5322) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2303) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391) at android.app.ActivityThread.access$900(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java:5511) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(Native Method)

Olá, acredito que converter sua array para uma lista possa resolver:

String[] array = getResources().getStringArray(R.array.classificacao_venda);

List<String> lista = new ArrayList<>(Arrays.asList(array));

spnTipoPagamento = (Spinner) findViewById(R.id.spn_tipo_pagamento);
ArrayAdapter adpTipoPagamento = new ArrayAdapter(this, android.R.layout.simple_list_item_1, lista);
adpTipoPagamento.remove(adpTipoPagamento.getItem(1));
adpTipoPagamento.notifyDataSetChanged();
spnTipoPagamento.setAdapter(adpTipoPagamento);
1 curtida

opá funcionou cara, obrigadão, mas poderia me dizer pq desta forma foi?

Que bom que te ajudou :smile:

Antes você estava usando um array com getResources().getStringArray(R.array.classificacao_venda), que retorna uma array e uma array é imutável, não podendo adicionar nem remover elementos.

Então eu converti para uma lista nesta linha:

List<String> lista = new ArrayList<>(Arrays.asList(array));

Pois ela permite adicionar e remover elementos.

Obrigado pela dica, vai me ajudar em outros projetos tb, obrigado mesmo amigo.