Posición: Newbie
Grupos: Registered
Registrado: 29/05/2014(UTC) Mensajes: 1
|
muy buenas a todos, soy nuevo en el foro y en esto de android tambien, y tratando de realizar un proyecto me e encontrado con un problema con el que espero me puedan ayudar. resulta que debo crear una aplicacion que me clasifique paginas web por medio de las etiquetas de su codigo html, de momento en codigo java he logrado crear una clase que con la url; me guarda en un arraylist las etiquetas en la pagina y la cantidad de veces que cada una se repite. cuando trato de ejecutar esto en el emulador de android la aplicacion se cierra, lo que tengo de momento es que en la actividad inicial se ingresa la url, y con un boton cargo la segunda pasandole esta url, y luego me muestre el numero de elemntos en el arraylist, pero no me muestra nada, luego se detiene la aplicacion y me muestra el mensaje "la aplicacion se ha detenido inesperadamente". espero haberme explicado bn. les mmuestro el codigo de la clase.
Código:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Clasificador {
public String url;
public ArrayList<Etiqueta> etiquetas;
public int longitud;
public String msj;
public Clasificador(String url){
this.url = url;
}
public ArrayList<Etiqueta> leerHtml(){
URL urlObj;
String todohtml ="";
try{
urlObj = new URL(this.url);
InputStreamReader isreader = new InputStreamReader(urlObj.openStream());
BufferedReader bfreader = new BufferedReader(isreader);
String codigo;
while((codigo = bfreader.readLine()) != null){
todohtml += codigo +"\n";
this.longitud++;
}
bfreader.close();
contarEtiqutas(todohtml);
Collections.sort(this.etiquetas, new Comparator<Etiqueta>(){
public int compare(Etiqueta e1, Etiqueta e2){
return e1.nombre.compareTo(e2.nombre);
}
});
this.msj = "Resultado Exitoso";
}catch(MalformedURLException e){
this.msj = "URL ilegible";
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
this.msj = "Ocurrio un Error inesperado.\n" + e.getMessage();
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
return etiquetas;
}
private void contarEtiqutas(String cadena){
this.etiquetas = new ArrayList<Etiqueta>();
//String cadena = "<div id='tag_cloud-2' class=String[] args_cloud widget-widget_tag_cloud <h1 clearfix'>";
boolean guardar = false;
boolean esta = false;
String nombre = "";
for (int i = 0; i < cadena.length(); i++) {
char letra = cadena.charAt(i);
if (letra == '<') {
i++;
letra = cadena.charAt(i);
while (Character.isLetter(letra)) {
nombre += letra;
guardar = true;
i++;
letra = cadena.charAt(i);
}
if (guardar) {
//guardar la etiqueta en la lista
for (Etiqueta etiqueta : this.etiquetas) {
if (("<" + nombre + ">").equals(etiqueta.nombre)) {
etiqueta.count++;
esta = true;
}
}
if (!esta) {
Etiqueta etiqueta = new Etiqueta();
etiqueta.nombre = "<" + nombre + ">";
etiqueta.count = 1;
this.etiquetas.add(etiqueta);
}//fin guardar etiqueta
nombre = "";
guardar = false;
esta = false;
}
}
}
}
}
y esto es lo que hago en la segunda actividad
Código:
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.GridView;
import android.widget.TextView;
import com.example.clasificarweb.classextras.Clasificador;
import com.example.clasificarweb.classextras.Etiqueta;
public class TablaEtiquetas extends Activity {
private String url;
GridView gridView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tabla_etiquetas);
Bundle bundle = getIntent().getExtras();
TextView urltxt = (TextView) findViewById(R.id.textView1);
url = bundle.getString("url");
//urltxt.setText(url);
//generarTabla();
urltxt.setText(generarTabla().size());
}
public void regresar(View view) {
finish();
}
public ArrayList<Etiqueta> generarTabla(){
Clasificador clasificador = new Clasificador(url);
ArrayList<Etiqueta> datos = clasificador.leerHtml();
return datos;
}
}
no estoy seguro de que sea la manera correcta de hacerlo en una aplicacion android, ni de si sea la mejor manera de hacerlo, espero me puedan ayudar y dar sujerencias gracias de antemano Editado por un usuario jueves, 29 de mayo de 2014 23:21:28(UTC)
| Razón: No especificada
|
|
|
|
Posición: Administration
Grupos: Administrators
Registrado: 07/10/2010(UTC) Mensajes: 436 Ubicación: España Agradecimientos: 38 veces Fue agradecido: 49 vez/veces in 48 publicación(es).
|
Hola!
Muy buen codigo! la verdad esque nunca he intentado hacer algo parecido, tendria que mirarlo detenidamente.... esos dias estoy bastante liado con varios poryectos... haver si alguien se anima y hecha un cable!! |
|
|
|
|
Salto de foro
No puedes iniciar nuevos temas en este foro.
No puedes responder a temas en este foro.
No puedes eliminar sus temas en este foro.
No puedes editar sus temas en este foro.
No puedes crear encuestas en este foro.
No puedes votar las encuestas en este foro.