Vistas de página en total

sábado, 29 de septiembre de 2012

Programación Android con AIDE y Java 6a

Programación Android con AIDE y Java 6
Una de las metas intelectuales que establecí en mi proyecto de vida fue el de llegar a crear una base de conocimientos de la Evolución y Desarrollo Humano en mi teléfono inteligente. Para lograrlo fue necesario aprender el lenguaje java orientado a objetos y programar android con AIDE. Para seguir aprendiendo nuevos conocimientos del lenguaje Java, la única forma es estudiar y repetir tantas veces como sea necesario, los conceptos y fundamentos del lenguaje Java hasta comprenderlos y que se queden grabados en la mente. Un reforzamiento es comprender lo que es una base de conocimientos EYDH y la computadora de un teléfono inteligente y además realizar muchos ejemplos, desde los más sencillos hasta los más complicados, como los que hemos visto en los blog anteriores y el que veremos en este blog.
Base de Conocimientos EYDH
Computadora de un Teléfono Inteligente
Programación Android con AIDE y Java 1
P01 Mi Primer Programa  y el de una Calculadora
Programación Android con AIDE y Java 2
P02 y Lenguaje Java Orientado a Objetos
Programación Android con AIDE y Java 3
P03_variables
P04_string
P05_entrada_salida
P06_if
Programación Android con AIDE y Java 4
P07_control_switch
P08_while
P09_for_arreglos
P10_arreglos_lista
Programación Android con AIDE y Java 5
P11_temas_lista
Programación Android con AIDE y Java 6
P12_temas_objeto

La herramienta AIDE se usa para programar Android con Java la computadora de un teléfono inteligente. AIDE significa Android Integrated Development Environmente y es un Ambiente de Desarrollo Integrado para Android con el lenguaje Java. Con este sistema se pueden desarrollar y crear programas en el mismo teléfono celular que tengan como sistema operativo android 2.2. Por lo tanto para desarrollar programas es necesario tener un teléfono inteligente o móvil celular como el que tengo, un Samsung Galaxy mini con el sistema operativo android 2.2. Para adquirir AIDE se debe usar el internet del teléfono y de conectarse al mercado o play store de android, buscar AIDE que es libre, bajarlo e instalarlo y listo se puede iniciar a programar. Es fabuloso! programar en una mano la computadora de un teléfono inteligente.

P12_temas_objeto
Este ejemplo trata del manejo de nombres en general y de los nombres de un tema en específico y su descripción. En la Evolución y Desarrollo Humano hago una descripción de la secuencia en una línea del tiempo, del pasado, presente y futuro de la humanidad.  El pasado se inicia con la evolución física, biológica y social, el presente de la vida actual de todo ser humano y el futuro de los hechos que pueden suceder de forma catastrófica y aleatoria y que puedan afectar a la humanidad. Cada secuencia en el tiempo considero un tema fundamental con un nombre y una descripción, así en la evolución física inicio con el tema de un principio, continúo con las cuerdas y membranas, gran explosión, partículas fundamentales, gravitón, quarks, núcleo atómico, electrones, átomo,  moléculas, gas y polvo cósmico, galaxias, universo, sistema solar, tierra, etc. Continúa los temas de la evolución biológica y social. Los temas del presente y del futuro. Todos los temas con su nombre y descripción. El programa maneja los temas en el teléfono inteligente tal como el Galaxi mini que tiene el sistema operativo android2.2.
Este programa trata los temas como un objeto y se define como la clase de Temas con su nombre y descripción, se puede ver como el uso de la programación orientada a objetos de Java, facilita el manejo de varios datos, creando registros que pueden almacenarse en un solo archivo. El programa también captura tema por tema, cada tema se agrega a una lista que puede desplegarse en la pantalla, cada tema puede modificarse y eliminarse, la lista de temas se puede guardar en un archivo y posteriormente se pueda recuperar la lista de temas del archivo.

Creamos un nuevo proyecto P12_temas_objeto, en modulo ponemos com.gri.p12 presionamos el folder src y vamos al programa MainActivity.java presionamos Archivos y creamos un nuevo archivo con el nombre de Temas.java editamos e introducimos el siguiente programa para crear la clase de Temas.

package com.gri.p12;

public class Temas
{
    private String nomb;
    private String desc;

    public Temas(String nomb, String desc){
        this.nomb = nomb;
        this.desc = desc;
    }

    public void ponNomb(String nomb){
        this.nomb = nomb;
    }

    public String obtenNomb(){
        return nomb;
    }

    public void ponDesc(String desc){
        this.nomb = desc;
    }

    public String obtenDesc(){
        return desc;
    }
}//class

Ahora vamos al programa MainActivity.java editamos e introducimos el siguiente programa.

package com.gri.p12;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import android.view.View.OnClickListener;
import java.util.ArrayList;
import java.util.*;
import android.graphics.Color;
import java.io.*;
import android.content.Context;
import android.text.method.*;

public class MainActivity extends Activity implements OnClickListener
{
    Button b1, b2, b3, b4, b5, b6, b7, b8;   
    EditText et1;
    TextView tv2;
    //String t1 para captar temas de et1
    String t1, t2, t3;   
    //Arreglo lista para guardar temas
    ArrayList<String> lista = new  ArrayList<String>();
    ArrayList<String> lista1 = new  ArrayList<String>();
    ArrayList<Temas> lista2 = new  ArrayList<Temas>();
    //Para controlar menu
    int idx1, idx6, idx7, idx8 = -1;
    int cont1, cont6, cont7, cont8 = 0;
    // Called when the activity is first created.
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        //ScrollView sv = new ScrollView(this);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        TextView tv = new TextView(this);
        tv.setText("Temas");
        tv.setTextSize(20);
        //tv.setTypeface(Typeface.BOLD);
        tv.setTextColor(Color.CYAN);
        tv.setGravity(0x01);
        ll.addView(tv);
        LinearLayout ll1 = new LinearLayout(this);
        ll1.setOrientation(LinearLayout.HORIZONTAL);
        b1 = new Button(this);
        b1.setText("  Introd  ");
        ll1.addView(b1);
        b2 = new Button(this);
        b2.setText(" Borra ");
        ll1.addView(b2);       
        b3 = new Button(this);
        b3.setText("Guarda");
        ll1.addView(b3);
        b4 = new Button(this);
        b4.setText("Recupe ");
        ll1.addView(b4);
        ll.addView(ll1);

        LinearLayout ll2 = new LinearLayout(this);
        ll2.setOrientation(LinearLayout.HORIZONTAL);

        b5 = new Button(this);
        b5.setText("  ListaAr ");
        b5.setTextColor(Color.BLUE);
        ll2.addView(b5);
        b6 = new Button(this);
        b6.setTextColor(Color.BLUE);
        b6.setText("Modi_n");
        ll2.addView(b6);
        b7 = new Button(this);
        b7.setTextColor(Color.BLUE);
        b7.setText("Modi_d");
        ll2.addView(b7);
        b8 = new Button(this);
        b8.setTextColor(Color.BLUE);
        b8.setText("Elimina ");
        ll2.addView(b8);                       
        ll.addView(ll2);

        et1 = new EditText(this);
        et1.setText("Bienvenido al programa de temas");
        ll.addView(et1);

        tv2 = new TextView(this);
        tv2.setTextColor(Color.GREEN);
        tv2.setMovementMethod(ScrollingMovementMethod.getInstance());
        //tv2.setBackgroundColor(Color.BLACK);
        tv2.append("                              MENU\n");
        tv2.append("Introd  - Introduce temas en ventana de texto\n");
        tv2.append("Borra   - Borra ventana de texto\n");
        tv2.append("Guarda - Guarda un archivo lista de temas\n");
        tv2.append("Recupe - Recupera archivo lista de temas\n");       
        tv2.append("ListaAr - Despliega lista de temas\n");
        tv2.append("Modi_n - Modifica nombre del tema\n");
        tv2.append("Modi_d - Modifica descripcion del tema\n");
        tv2.append("Elimina - Elimina nombre y descrip. del tema\n");
        ll.addView(tv2);

        setContentView(ll);
        //sv.addView(ll);
        //setContentView(sv);

        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
        b3.setOnClickListener(this);
        b4.setOnClickListener(this);
        b5.setOnClickListener(this);       
        b6.setOnClickListener(this);
        b7.setOnClickListener(this);
        b8.setOnClickListener(this);
    }

    //@Override
    public void onClick(View view){       
        if(view == b1){           
            //tv2.setText("");
            //t2 = "";
            t1 = et1.getText().toString();
            switch(cont1) {
                case 0:
                    et1.setText("Borra e introd. nombre del tema");
                    cont6 = cont7 = cont8 = 0;
                    cont1++;
                    break;
                case 1:           
                    if(!t1.equals(" ")){           
                        boolean duplicado = false;
                        Iterator items = lista2.iterator();                       
                        while(items.hasNext()){
                            Temas tema2 =(Temas)items.next();           
                            if (tema2.obtenNomb().equalsIgnoreCase(t1)){
                                duplicado = true;
                            }                       
                        }       
                        if(!duplicado){
                            tv2.append("Tema: "+t1+"\n");
                            //Guarda t1 en t2
                            t2 = t1;
                            et1.setText("Borra e introd. descripcion del tema");
                            cont1++;
                            break;
                        }else{
                            et1.setText("Tema Duplicado...presiona Intro");
                            cont1 = 0;
                            break;
                        }                       
                    }else{
                        et1.setText("Espacios...presiona Intro");
                        cont1 = 0;
                        break;
                    }                   
                case 2:
                    //Capta de et1 tema
                    //t1 = et1.getText().toString();
                    //Verifica si es un tema
                    if(!t1.equals(" ")){               
                        //tv2.append("Desc: "+t1+"\n");
                        //Agrega tema a lista1

                        Temas temas1 = new Temas(t2, t1);
                        lista2.add(temas1);

                        //lista.add(t2);
                        //lista1.add(t1);
                        et1.setText("Fin de la captura del temal");                   

                        lista22();
                        //lista();
                        cont1 = 0;
                        break;
                    }else{
                        et1.setText("Espacios...Introduce tema\n");
                        cont1 = 0;
                        break;
                    }                                           
            }//switch       
        }//b1

        if(view == b2){
            //Limpia ventana et1
            et1.setText(" ");               
        }//b2

        if(view == b3){
            //Verifica que lista no este vacia
            if(!lista2.isEmpty()){
                tv2.setText("");           
                //Crea y guarda archivo interno               
                try{
                    OutputStreamWriter osw1 = new OutputStreamWriter(
                        openFileOutput("temas.txt", Context.MODE_PRIVATE));
                    tv2.append("Crear archivo lista nombres de temas: "+"\n");

                    Iterator items = lista2.iterator();                       
                    while(items.hasNext()){
                        Temas temas2 =(Temas)items.next();                   
                        osw1.write(temas2.obtenNomb()+"##"+temas2.obtenDesc()+"\n");
                    }                              
                    osw1.close();
                    tv2.append("Archivo lista de temas creado...\n");
                }catch(Exception ex){
                    tv2.append("Error al crear archivo...\n");
                }                              
            }else{
                tv2.setText("");
                tv2.append("Lista de temas esta vacia...");
            }//empty
        }//b3

        if(view == b4){
            //Verifica que lista no este vacia
            //if(!lista.isEmpty()){
            tv2.setText("");
            lista2.clear();
            //Recupera archivo de temas
            try{
                BufferedReader br1 = new BufferedReader(new InputStreamReader
                    (openFileInput("temas.txt")));
                tv2.append("Recupera archivo de lista de temas: \n");
                String lt1;
                while((lt1 = br1.readLine()) != null){
                    String lt2[] = lt1.split("##");
                    String nomb2 = lt2[0];
                    String desc2 = lt2[1];
                    Temas temas2 = new Temas(nomb2, desc2);
                    lista2.add(temas2);       
                }   
                br1.close();
            }catch(Exception ex){
                tv2.append("Error de lectura...\n");
            }           
            lista22();
            //}else{
            //tv2.setText("");
            //tv2.append("Lista de temas esta vacia...");
            //}//empty
        }//b4

        //Lista
        if(view == b5){
            //Verifica que lista no este vacia
            if(!lista2.isEmpty()){
                lista22();
            }else{
                tv2.setText("");
                tv2.append("Lista de temas esta vacia...");
            }//empty
        }//b5

        //Modifica nombre del tema
        if(view == b6){
            if(!lista2.isEmpty()){

                t1 = et1.getText().toString();
                switch(cont6){
                    case 0:
                        et1.setText("Introduce nombre a modificar");
                        //t1 = "";
                        //idx6 = -1;
                        cont1 = cont7 = cont8 = 0;
                        cont6++;                       
                        break;
                    case 1:
                        Iterator items = lista2.iterator();
                        while(items.hasNext()){
                            Temas temas2 =(Temas)items.next();
                            if(temas2.obtenNomb().equals(t1)){                               
                                idx6 = lista2.indexOf(temas2);
                                t2 = "";
                                t3 = "";
                                t2 = temas2.obtenNomb();
                                t3 = temas2.obtenDesc();                       
                            }
                        }
                        if(idx6 == -1){
                            et1.setText("Nombre no existe...presiona Elimina");
                            cont6 = 0;
                            break;   
                        }                                                   
                        cont6++;
                        et1.setText("Introduce nombre de tema nuevo");
                        break;                       

                    case 2:
                        if(!t1.equals(" ")){
                            boolean duplicado = false;
                            Iterator items1 = lista2.iterator();                       
                            while(items1.hasNext()){
                                Temas tema2 =(Temas)items1.next();
                                tv2.append("Nomb: "+tema2.obtenNomb()+"t1: "+t1+"\n");
                                if (tema2.obtenNomb().equalsIgnoreCase(t1)){
                                    duplicado = true;
                                }                       
                            }
                            if(duplicado){
                                et1.setText("Tema Duplicado...presiona Modi_n");
                                cont6 = 0;
                                break;
                            }

                            Iterator items2 = lista2.iterator();
                            while(items2.hasNext()){
                                Temas temas2 =(Temas)items2.next();                           
                                if(temas2.obtenNomb().equals(t2)){                               
                                    idx6 = lista2.indexOf(temas2);                       
                                }
                            }
                            if(idx6 == -1){
                                et1.setText("Nombre no existe...presiona Elimina");
                                cont6 = 0;
                                break;   
                            }
                            lista2.remove(idx6);

                            Temas temax = new Temas(t1,t3);
                            lista2.add(temax);
                            et1.setText("Modificacion de nombre ok...");
                            cont6 = 0;
                            break;                                                       
                        }else{
                            et1.setText("Espacios...presiona Modi_n");
                            cont6 = 0;
                            break;
                        }                                               
                }//switch
            }else{
                tv2.setText("");
                tv2.append("Lista de temas esta vacia...");
            }//empty           
        }//b6

Programación Android con AIDE y Java 6b

        //Modifica descripcion del tema
        if(view == b7){
            if(!lista2.isEmpty()){
                t1 = et1.getText().toString();
                switch(cont7){
                    case 0:
                        et1.setText("Introduce nombre del tema");
                        idx7 = -1;
                        cont1 = cont6 = cont8 = 0;
                        cont7++;                       
                        break;
                    case 1:
                        Iterator items = lista2.iterator();
                        while(items.hasNext()){
                            Temas temas2 =(Temas)items.next();
                            if(temas2.obtenNomb().equals(t1)){                               
                                idx7 = lista2.indexOf(temas2);
                                t2 = "";
                                t3 = "";
                                t2 = temas2.obtenNomb();
                                t3 = temas2.obtenDesc();                       
                            }
                        }
                        if(idx7 == -1){
                            et1.setText("Nombre no existe...presiona Elimina");
                            cont7 = 0;
                            break;   
                        }                                                   
                        cont7++;
                        et1.setText("Introduce descripcion tema nuevo");
                        break;                                                                   
                    case 2:
                        if(!t1.equals(" ")){
                            Iterator items2 = lista2.iterator();
                            while(items2.hasNext()){
                                Temas temas2 =(Temas)items2.next();                           
                                if(temas2.obtenNomb().equals(t2)){                               
                                    idx7 = lista2.indexOf(temas2);                       
                                }
                            }
                            if(idx7 == -1){
                                et1.setText("Nombre no existe...presiona Modi_d");
                                cont7 = 0;
                                break;   
                            }
                            lista2.remove(idx7);

                            Temas temax = new Temas(t2,t1);
                            lista2.add(temax);
                            et1.setText("Modificacion de descripcion ok...");
                            cont7 = 0;
                            break;                                                       
                        }else{
                            et1.setText("Espacios...presiona Modi_d");
                            cont7 = 0;
                            break;
                        }                           
                }//switch
            }else{
                tv2.setText("");
                tv2.append("Lista de temas esta vacia...");
            }//empty

        }//b7

        //Elimina nombre y descripcion del tema
        if(view == b8){
            if(!lista2.isEmpty()){
                t1 = et1.getText().toString();
                switch(cont8){
                    case 0:
                        et1.setText("Introduce nombre a eliminar");
                        //t1 = "";
                        idx8 = -1;
                        cont1 = cont6 = cont7 = 0;
                        cont8++;                       
                        break;
                    case 1:
                        //lista2.remove(1);
                        //cont8 = 0;
                        //break;                       

                        Iterator items = lista2.iterator();
                        while(items.hasNext()){
                            Temas temas2 =(Temas)items.next();
                            //tv2.append("Nomb: "+temas2.obtenNomb()+"t1: "+t1+"\n");
                            if(temas2.obtenNomb().equals(t1)){
                                //tv2.append("Nomb: "+temas2.obtenNomb()+"t1: "+t1+"\n");
                                idx8 = lista2.indexOf(temas2);
                                //lista2.remove(idx8);
                                tv2.append("idx8: "+idx8+"\n");
                            }
                        }
                        if(idx8 == -1){
                            et1.setText("Nombre no existe...presiona Elimina");
                            cont8 = 0;
                            break;   
                        }
                        lista2.remove(idx8);
                        et1.setText("Tema eliminado");
                        tv2.setText("");
                        tv2.append("Tema eliminado..."+t1+"\n");
                        //tv2.append("idx88: "+idx8+"\n");
                        cont8 = 0;
                        break;                                                           
                }//switch
            }else{
                tv2.setText("");
                tv2.append("Lista de temas esta vacia...");
            }//empty       
        }//b8   
    }//on click

    public void lista22(){
        tv2.setText("");
        Iterator items = lista2.iterator();                       
        while(items.hasNext()){
            Temas temas2 =(Temas)items.next();
            //s+= "\n" + alumno.getNombre()
            tv2.append(temas2.obtenNomb()+"\n"+temas2.obtenDesc()+"\n");
            //s+= "\n" + alumno.getInfo();
        }
    }//lista2
}//class

Como se explico en el proyecto P03_variables, vamos a compilar, instalar y ejecutar el proyecto y obtenemos los resultados deseados.
Captura de Temas


Guardar Archivo de Temas


Recuperar Archivo de Temas


Modificar Temas


Eliminar Temas