Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/06/2011, 10:19
tazmaniator
 
Fecha de Ingreso: noviembre-2008
Mensajes: 49
Antigüedad: 15 años, 5 meses
Puntos: 4
Pregunta problemas para seleccionar un elemento de un listview



Tengo un listview parecido a la imagen, donde el checbox lo quiero usar para eliminar varios elementos, el problema q tengo es q no puedo selecccionar el elemento del listview para q me muestre otra actividad sin necesidad de activar el checkbox, lo estado intentando con el setOnItemClickListener y el setOnItemLongClickListener, pero hasta ahorita no me han funcionado, solo me ha funcionado los eventos de setOnTouchListener y setOnItemSelectedListener.

aqui dejo la clase q ocupo para crear el list view, espero me puedan ayudar:
Código JAVA:
Ver original
  1. package Password.Principal;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.database.Cursor;
  6. import android.os.Bundle;
  7. import android.view.Gravity;
  8. import android.view.LayoutInflater;
  9. import android.view.MotionEvent;
  10. import android.view.View;
  11. import android.view.View.OnTouchListener;
  12. import android.view.ViewGroup;
  13. import android.view.View.OnClickListener;
  14. import android.widget.AdapterView;
  15. import android.widget.AdapterView.OnItemClickListener;
  16. import android.widget.AdapterView.OnItemLongClickListener;
  17. import android.widget.AdapterView.OnItemSelectedListener;
  18. import android.widget.ArrayAdapter;
  19. import android.widget.CheckBox;
  20. import android.widget.CompoundButton;
  21. import android.widget.ImageButton;
  22. import android.widget.ListView;
  23. import android.widget.TextView;
  24. import android.widget.Toast;
  25. import usuario.Alerts;
  26. import usuario.ManejadorBD;
  27. import usuario.Password;
  28. import android.widget.CompoundButton.OnCheckedChangeListener;
  29.  
  30. public class Principal extends Activity {
  31.  
  32.     public Password[] datos = null;
  33.     public Alerts alerta = new Alerts();
  34.     public AdaptadorPasswords contras=null;
  35.  
  36.     /** Called when the activity is first created. */
  37.     @Override
  38.     public void onCreate(Bundle savedInstanceState) {
  39.         super.onCreate(savedInstanceState);
  40.         setContentView(R.layout.principal);    
  41.         try{
  42.             ManejadorBD cnx = new ManejadorBD(Principal.this, "passwordsBD", 1, 'r');
  43.             Cursor c = cnx.consultar("SELECT * FROM passwords", null);
  44.             if (c == null)
  45.                 alerta.showWarning("Error en la Aplicación", "Se ha producido un error", Principal.this);
  46.             else {
  47.                 if (c.moveToFirst()) {
  48.                     int pos = 0;
  49.                     int limite=c.getCount();
  50.                     datos=new Password[limite];
  51.                     do {                       
  52.                         int id=c.getInt(0);
  53.                         String sitio=c.getString(1);
  54.                         String user=c.getString(2);
  55.                         String contra=c.getString(3);
  56.                         String preg=c.getString(4);
  57.                         String resp=c.getString(5);
  58.                         String corAlt=c.getString(6);
  59.                         datos[pos] = new Password(id,sitio,user,contra,preg ,resp,corAlt);                     
  60.                         pos++;
  61.                     } while (c.moveToNext());
  62.                 } else {
  63.                     alerta.showWarning("Error en la Aplicación", "Se ha producido un error", Principal.this);
  64.                 }
  65.             }          
  66.             if (this.datos == null) {
  67.                 alerta.showWarning("Registrar Passwords",
  68.                         "Debe registrar la información", Principal.this);
  69.             } else {
  70.                 contras = new AdaptadorPasswords(this);            
  71.             }
  72.            
  73.             final ListView contrasenias = (ListView) findViewById(R.id.contrasenias);
  74.             contrasenias.setAdapter(contras);
  75.  
  76.             ImageButton añadir = (ImageButton) findViewById(R.id.agregar);
  77.             ImageButton borrar = (ImageButton) findViewById(R.id.eliminar);
  78.  
  79.             añadir.setOnClickListener(new OnClickListener() {
  80.  
  81.                 public void onClick(View v) {
  82.                     // TODO Auto-generated method stub
  83.                     Intent envio = new Intent(Principal.this, NewPassword.class);
  84.                     setResult(RESULT_OK, envio);
  85.                     startActivity(envio);
  86.                 }
  87.             });
  88.  
  89.             borrar.setOnClickListener(new OnClickListener() {
  90.  
  91.                 @Override
  92.                 public void onClick(View v) {
  93.                     // TODO Auto-generated method stub
  94.  
  95.                 }
  96.             });
  97.        
  98.            
  99.             contrasenias.setOnItemClickListener(new OnItemClickListener() {
  100.  
  101.                 @Override
  102.                 public void onItemClick(AdapterView<?> arg0, View arg1,
  103.                         int arg2, long arg3) {
  104.                     // TODO Auto-generated method stub
  105.                     /*Intent envio=new Intent(Principal.this,Contras.class);
  106.                     Bundle contra=new Bundle();
  107.                     contra.putInt("Id", datos[contrasenias.getId()].getId());
  108.                     envio.putExtras(contra);
  109.                     setResult(RESULT_OK, envio);
  110.                     startActivity(envio);
  111.                     finish();*/
  112.                     Toast msj = Toast
  113.                     .makeText(
  114.                             Principal.this,
  115.                             "se ha seleccionado una opcion"+contrasenias.getItemIdAtPosition(arg2),
  116.                             Toast.LENGTH_SHORT);
  117.             msj.setGravity(Gravity.CENTER_HORIZONTAL,
  118.                     0, 0);
  119.             msj.show();
  120.                 }
  121.             });
  122.         }catch(Exception e){
  123.             alerta.showWarning("Error en la Aplicación", "Se ha producido un error", Principal.this);
  124.         } catch (Throwable e) {
  125.             // TODO Auto-generated catch block
  126.             alerta.showWarning("Error en la Aplicación", "Se ha producido un error", Principal.this);
  127.         }
  128.        
  129.     }
  130.  
  131.     @SuppressWarnings("rawtypes")
  132.     class AdaptadorPasswords extends ArrayAdapter {
  133.  
  134.         Activity context;
  135.  
  136.         @SuppressWarnings("unchecked")
  137.         AdaptadorPasswords(Activity context) {
  138.             super(context, R.layout.lista, datos);
  139.             this.context = context;
  140.         }
  141.  
  142.         public View getView(final int position, View convertView, ViewGroup parent) {
  143.             View item = convertView;
  144.             final ViewHolder holder;
  145.  
  146.             if (item == null) {
  147.                 LayoutInflater inflater = context.getLayoutInflater();
  148.                 item = inflater.inflate(R.layout.lista, null);
  149.  
  150.                 holder = new ViewHolder();
  151.                 holder.titulo = (TextView) item.findViewById(R.id.Titulo);
  152.                 holder.subtitulo = (TextView) item.findViewById(R.id.Subtitulo);
  153.                 holder.activacion = (CheckBox) item.findViewById(R.id.activacion);
  154.                
  155.                 holder.activacion.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  156.                    
  157.                     @Override
  158.                     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  159.                         // TODO Auto-generated method stub
  160.                         Toast msj=Toast.makeText(Principal.this, "El usuario selecciona una opcion de la lista "+datos[position].getId(), Toast.LENGTH_SHORT);
  161.                         msj.show();
  162.                     }
  163.                 });
  164.                
  165.                 item.setTag(holder);
  166.             } else {
  167.                 holder = (ViewHolder) item.getTag();
  168.             }
  169.  
  170.             holder.titulo.setText(datos[position].getSitio());
  171.             holder.subtitulo.setText(datos[position].getUsuario());
  172.  
  173.             return (item);
  174.         }
  175.     }
  176.  
  177.     static class ViewHolder {
  178.         TextView titulo;
  179.         TextView subtitulo;
  180.         CheckBox activacion;
  181.     }
  182. }