sábado, 17 de noviembre de 2012

CProject. Gestor de proyectos en Android

Desde hace tiempo estoy buscando un gestor de proyectos en android que cumpla con mis necesidades, pero no encuentro ninguno. Así que hace 4 días me pregunté: ¿y si retomo mi proyecto de sincronización de tareas Android-OpenERP y le doy un lavado de cara?. Dicho y hecho. En 4 días, con sus noches, he realizado un pequeño proyectito.

CProject - Créditos del proyecto.

Aún le queda mucho por mejorar. Por ahora sólo se pueden crear proyectos nuevos, tareas en dichos proyectos, y salvar toda la información en SQLite en el propio dispositivo. Por supuesto también se pueden migrar los proyectos a OpenERP mediante Web-Services.
CProject - Action bar con botón que ejecuta Web Service para migrar datos a OpenERP.

En mi lista de TODOs para el proyecto tengo en mente mejorar e implementar una serie de cosas, como por ejemplo que se pinte el diagrama de Gantt, asignar etiquetas a los proyectos, estadísticas, popups para introducir fechas, etc.

CProject - Pantalla de introducción de nombre de proyecto.

En sucesivos post iré comentando el estado del proyecto, he incluso cuando termine algunas características más grabaré algún vídeo para subirlo al blog.
Por último, si alguien está interesado en el proyecto, o desea que implemente alguna característica especial, o simplemente quiere colaborar, que contacte conmigo.
Saludos.

jueves, 15 de noviembre de 2012

Custom OnItemClickListener para elementos del ListView

En la entrada anterior realicé un menú contextual para los items de un ListView. El caso es que en mi aplicación quiero que haya una opción por defecto (que también está en el menú contextual) para las pulsaciones simples.

Encontré un post muy interesante que trataba el tema (en inglés), y otro post adaptado del anterior en español.

En mi caso lo he adaptado a mis necesidades, puesto que mis opciones del ListView se leen de base de datos.

A continuación mi código de ejemplo


private void initActivity(){
        setContentView(R.layout.main);
        
        registerForContextMenu(getListView());  
        
        // Habilito click simple en la lista de elementos
        // Hack by http://stackoverflow.com/questions/4852307/listview-onclick-goes-to-a-new-activity
        //libreyextremo.blogspot.com.es/2012/03/tutorial-android-parte-13-navegacion.html
        ListView lv = (ListView)findViewById(android.R.id.list);
        final Intent activity = new Intent(this,CTaskActivity.class);
        OnItemClickListener myclickListView = new OnItemClickListener()
        {
         public void onItemClick(AdapterView parent, View view,int position, long id){
          
           long id_proyecto = getIdProjectByPositionListView(position);
           activity.putExtra("id_proyecto", id_proyecto);
           
           startActivity(activity);
             
         }
         
        };

        setListAdapter(new ArrayAdapter(context,android.R.id.list));
        lv.setOnItemClickListener(myclickListView);
        
     // Cargo los proyectos en el sistema
        showAllProjects();
 }

El código es bastante sencillo, simplemente se trata de hacer un OnItemClickListener persnalizado, asignarlo al ListView y después cargar los items. Ojo, que si se cargan antes los items no se mostrará nada en pantalla.

Por último, initActivity() es un método que llamo desde onCreate() de la actividad.

Saludos.

martes, 13 de noviembre de 2012

Creando un menú context para elementos de ListView

Rediseñando una aplicación que estoy haciendo en Android he decidido añadir menús de contexto a los elementos de una lista (ListView).

Captura de pantalla del menú de contexto.


El primer paso como siempre ha sido buscar la solución en alguno de mis libros de Android, pero resulta que este tipo de menú no viene :(
Menos mal que existe San Google y es fácil encontrar post(API) y post al respecto. De todas formas un resumen rápido de lo que hay que hacer.

El código

Creo un menu_context.xml con las opciones que necesito.

    
     
     
    
    
    
    
    

En el fichero string.xml añado los títulos que se muestran en el menú
string.xml

Editar
Borrar
En el método onCreate llamo a registerForContextMenu
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        registerForContextMenu(getListView());    // Hay que añadir esta linea

        }
Registro el menú en la actividad:
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_context, menu);
    }
Y por último se añade el switch para manejar las opciones
@Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        switch (item.getItemId()) {
            case R.id.edit:
                // Tareas a realizar
                return true;
            case R.id.delete:
                // Tareas a realizar
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }
Y esto es todo. Post rápido al canto. Saludos.
Related Posts Plugin for WordPress, Blogger...