PDA

Ver la Versión Completa : [ CONSULTA ] SimpreAdapter + ListView + onItemClick + ImageView


alfonsosj
28/01/13, 19:49:55
Hola, tengo un ListView que rellena desde una base de datos un SimpleAdapter.
Con onItemClickListener consigo modificar los elementos del item, y tengo en el layout un imageView que me gustaria que al hacer click se hiciera visible o invisible segun su estado, y lo consigo pero debido al recycling del view me hace visibles o invisibles todos los items que se encuentran en la misma posicion de cada view que hay mas abajo cuando hago scroll....

¿Como puedo hacer que solo actue sobre el item sobre el que hago click y no de las demas vistas?

Gracias.

kriogeN
28/01/13, 20:39:29
Tu mismo te has respondido, haciendo que no recicle y que cada getView infle Layouts nuevos.

Otra opción es tener por ejemplo un TextView oculto con un texto que indique si debe ser visible o no, y al reciclar hacerlo visible si el texto dice que tiene que ser visible.

alfonsosj
28/01/13, 20:40:30
Eso es lo que pasa, la teoria la se, pero en la practica llevo dias con este problema y no lo consigo.

alfonsosj
28/01/13, 21:49:01
Este es mi codigo :

mListView = this.getListView();
mView = getView();

mListView.setAdapter(adapter);
barparams = new ArrayList<NameValuePair>();

setListAdapter(adapter);

final ListView lvi = getListView();
lvi.setTextFilterEnabled(true);

lvi.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

@SuppressWarnings("unchecked")
HashMap<String, String> o = (HashMap<String, String>) lvi.getItemAtPosition(position);

getSherlockActivity().startActionMode(ActionActivi tyCallback);

ImageView checkon = (ImageView) view.findViewById(R.id.checkon);


String checkado = o.get("checked");
if(checkado.equals("0")){
o.put("checked", "1");
checkon.setVisibility(View.VISIBLE);

}
else if(checkado.equals("1")){
o.put("checked", "0");
checkon.setVisibility(View.INVISIBLE);
}


}

}
);