ListView Android - Como manter uma linha do ListView selecionada após o evento click(touch)
10 respostas
levimendes
Olá pessoal,
Alguém sabe me dizer como eu devo fazer para manter uma linha de um ListView selecionada?
Pois no sistema que eu estou atuando o usuário poderá selecionar uma linha de uma ListView que deverá ficar selecionada até que ele acione um outro botão que iniciará uma outra Activity.
Você pode fazer o seguinte, quando o usuário clicar no item do listview, você atualiza ele para alguma imagem com hover (selecionada). =)
Simples?
levimendes
Eu acabei solucionando de um outro jeito,
eu adiciono um TextView em cima da minha lista quando o usuário seleciona um ítem, imprimindo a mensagem
"Item tal selecionado", mesmo assim, valeu felipebonezi.
danilorangelmg
pq vc simplismente nao colore a linha é bem mais facil.
levimendes
Bom dia danilorangelmg,
É exatamente isso que eu queria fazer, porém eu descobri que manter a seleção da linha clicada é um pouco complicado.
Você conhece uma maneira simples de se fazer isso?
danilorangelmg
Cara o que eu fiz foi o seguinte, eu utilizei um metodo dentro do meu adapter ond eu guardo qual é a view selecionada, é tipo assim
eu postei um adapter de um teste que eu fiz com um bluetooth, mais a ideia e a mesma,
publicclassCustomAdapter<T>extendsArrayAdapter<T>{privateContextcontext;privateList<?>domainList;privateintlayoutId;privateList<Integer>properties;privateViewselectedView;privateintlastPosition=-1;publicCustomAdapter(Contextcontext,inttextViewResourceId,List<T>objects,List<Integer>props){super(context,textViewResourceId,objects);this.context=context;this.domainList=objects;this.layoutId=textViewResourceId;this.properties=props;}@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){Viewview=null;LayoutInflaterlayoutInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);view=layoutInflater.inflate(this.layoutId,null);Objectobj=this.domainList.get(position);// objeto da listafor(Integerpropertie:properties){TextViewtv=(TextView)view.findViewById(propertie);BluetoothDevicedevice=(BluetoothDevice)obj;if(propertie.equals(R.device_id.name)){tv.setText(device.getName());}elseif(propertie.equals(R.device_id.mac)){tv.setText(device.getAddress());}}returnview;}/***** este é o metodo que colore a linha da view da lista*/publicvoidsetSelectedView(ViewselectedView,intposition){this.lastPosition=position;if(this.selectedView!=null){this.selectedView.setBackgroundColor(Color.WHITE);}this.selectedView=selectedView;this.selectedView.setBackgroundColor(Color.argb(200,135,206,255));}}
ai tipo vc cria sua listActivity normalmente, popula a lista e implementa o onListItemClick()
privateListViewlstDados;privateArrayAdapter<String>adpListaCompra;........................//Defindo o layout para o ArrayAdapteradpListaCompra=newArrayAdapter<String>(this,android.R.layout.simple_list_item_single_choice);lstDados.setAdapter(adpListaCompra);//Configura o modo de seleção do ListViewlstDados.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
levimendes
Agradeço a todos que contribuíram me ajudando a solucionar o problema.
A solução mais simples foi a do paulofafism
Muito Obrigado.
levimendes
solução 100% perfeita para a obtenção do resultado desejado: