PDA

Ver la Versión Completa : ListActivity y CursorAdapter


sole79
04/09/13, 10:53:54
Hola amigos.

Estoy empezando en esto de android y haciendo una aplicación me encuentro con un problema.

He buscado por el foro, pero no he dado con la solución, si ya se ha resuelto siento las molestias y espero me redirijan al lugar apropiado......gracias....

Y os suelto el rollo:

En mi aplicación tengo una base de datos SQlite, la idea es mostrar una lista de datos de esa base de datos, para ello he creado una activity que carga un layout en el que entre otras cosas contiene el listView.......que es el que debo rellenar.

Hasta ahí todo bien.

Por otro lado he creado una clase que extiende de cursorAdapter, es un adapter en el que implemento los métodos

@Override
public void bindView(View view, Context context, Cursor cursor) con el que le digo que es lo que quiero ver....y

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) con el que le digo como lo quiero ver. mejor lo pongo entero......................

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
/*
* Aquí decimos cuando se abre por primera vez como queremos que se vea
* En este caso hemos creado un layout nuevo con 2 textview, uno de ellos con una letra
* un poco mayor.
*/

final LayoutInflater inflater = LayoutInflater.from(context);
final View view = inflater.inflate(R.layout.adapter_text, parent, false);

return view;
}

como véis aqui hago referencia a un layout que he creado personalizado.....adapter_text y que contiene una imagen, y 3 textview....

finalmente en la activity que se encargará de presentar los datos y que hereda de ListActivity tengo.....

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_lugares);

// asignamos a la variable lista, el elemento del layout
lista = (ListView) findViewById(android.R.id.list);
// declaramos un objeto adapter y abrimos para hacer lejible y
// escribible la base de datos
dbAdapter = new LugaresDBAdapter(this);
dbAdapter.abrir();
// llamamos al método consultar
aquí llamamos al método consultar que básicamente hace esto:

cursor = dbAdapter.getTipoComer();
startManagingCursor(cursor);
lugaresAdapter = new LugaresCursorAdapter(this, cursor);
lista.setAdapter(lugaresAdapter);


Y todo esto va muy bien...........se muestra la lista de cada item estupendamente....el problema lo tengo en que no soy capaz de hacer funcionar el

// @Override
// protected void onListItemClick(ListView l, View v, int position, long id){
// super.onListItemClick(l, v, position, id);
//Llamamos a visualizar
// visualizar(id);.....con este método llamo a otra Activity...pero la cosa es que no hace nada y no poe el método visualizar, sino porque no funciona el click....

// }

La app no da error ni la app se cuelga ni nada, simplemente no hace nada el click....he probado a implementar cosas sencillas dentro del metodo onclick ...como modtrar texto,,,pero ya digo....no hace nada....

A continuación, para ayudaros a que me ayudeis jejejejej os expongo una prueba que he hecho y que ha funcionado, pero no se como hacer para que me funcione como yo quiero, que es ver una lista como yo he diseñado y que funcione el onclick...

Resulta que me ha dado por probar una cosa.....en la activity que se encarga de mostrar la lista he cambiado el layout y sólo he puesto un layout que contiene un simple listview....

2) el layout que personalicé .....lo he dejado de lado y he creado uno muy simple en el que sólo se muestran 2 textview.....y en el adapter (cursorAdapter) he modificado el código para este nuevo layout.....

pues bien simplificando esto me muestra la lista (igual que antes, pero mas fea jejejejeje) y me funciona el onItemclic.......

Por qué me ocurre esto?, y cómo puedo solucionarlo?
me da que debe de ser algo de ListActivity, o yo que se, pero llevo 2 días con ello y no consigo hacer que funcione

Perdón por el rollo y muchas gracias por la ayuda

sole79
05/09/13, 07:00:02
Hola amigos...

por fin solucionado.......

lo comento aquí por si a alguno le surge lo mismo.....

La cosa no estaba en el código y lo he cambiado como 200 veces...:(

El tema estaba en el layout que contenía el listView..................yo había metido ese listVieu dentro de un scroll y ese era el putoooooooo problema, el scroll lo he eliminado y ahora todo va bien.

Saludos a todos