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.
Alguém pode me ajudar?
:?: :?: :?: :?: :?:
Você pode fazer o seguinte, quando o usuário clicar no item do listview, você atualiza ele para alguma imagem com hover (selecionada). =)
Simples?
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.

pq vc simplismente nao colore a linha é bem mais facil.
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?
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
public void setSelectedView(View selectedView, int position) {
this.lastPosition = position;
this.selectedView = selectedView;
this.selectedView.setBackgroundColor(Color.argb(200, 135, 206, 255));
}
public View getSelectedView() {
return selectedView;
}
esse metodo é chamado dentro do onListItemClick
@Override
protected void onListItemClick(ListView listView, View view, int position, long id) {
super.onListItemClick(listView, view, position, id);
final DefaultListAdapter dlap = ((DefaultListAdapter)listView.getAdapter());
int y = getListView().getScrollY();
getListView().scrollBy(0, y);
dlap.setSelectedView(view, position);
}
Tem como vc postar como vc fez?
eu postei um adapter de um teste que eu fiz com um bluetooth, mais a ideia e a mesma,
[code]
public class CustomAdapter extends ArrayAdapter {
private Context context;
private List<?> domainList;
private int layoutId;
private List properties;
private View selectedView;
private int lastPosition = -1;
public CustomAdapter(Context context,int textViewResourceId,List<T> objects, List <Integer> props) {
super(context, textViewResourceId, objects);
this.context = context;
this.domainList = objects;
this.layoutId = textViewResourceId;
this.properties = props;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(this.layoutId, null);
Object obj = this.domainList.get(position); // objeto da lista
for (Integer propertie : properties) {
TextView tv = (TextView)view.findViewById(propertie);
BluetoothDevice device = (BluetoothDevice) obj;
if (propertie.equals(R.device_id.name)) {
tv.setText(device.getName());
} else if (propertie.equals(R.device_id.mac)) {
tv.setText(device.getAddress());
}
}
return view;
}
/***
*
- este é o metodo que colore a linha da view da lista
*/
public void setSelectedView(View selectedView, int position) {
this.lastPosition = position;
if (this.selectedView != null) {
this.selectedView.setBackgroundColor(Color.WHITE);
}
this.selectedView = selectedView;
this.selectedView.setBackgroundColor(Color.argb(200, 135, 206, 255));
}
}[/code]
ai tipo vc cria sua listActivity normalmente, popula a lista e implementa o onListItemClick()
@SuppressWarnings({"unchecked" })
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
CustomAdapter<BluetoothDevice> adapter = ((CustomAdapter<BluetoothDevice>) l.getAdapter());
adapter.setSelectedView(v, position); // essa é a chamada do metodo responsavel por colorir a linha da lista
BluetoothDevice bd = adapter.getItem(position);
}
Veja se ajuda
private ListView lstDados;
private ArrayAdapter<String> adpListaCompra;
....
....
.....
...........
//Defindo o layout para o ArrayAdapter
adpListaCompra = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice);
lstDados.setAdapter(adpListaCompra);
//Configura o modo de seleção do ListView
lstDados.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
Agradeço a todos que contribuíram me ajudando a solucionar o problema.
A solução mais simples foi a do paulofafism
Muito Obrigado.