ListView Android - Como manter uma linha do ListView selecionada após o evento click(touch)

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.

:smiley: :smiley: :smiley:

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.

solução 100% perfeita para a obtenção do resultado desejado:


http://www.michenux.net/android-listview-highlight-selected-item-387.html