Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/11/2012, 01:45
Fsg
 
Fecha de Ingreso: junio-2009
Mensajes: 155
Antigüedad: 14 años, 10 meses
Puntos: 5
Pregunta ¿Como modificar un textview desde otra clase?

Estoy trabajando para un cliente una aplicacion en Android con Google Maps.
Uno de los modulos, debera de mostrar un mapa, con un marker, al hacerle clic al marker, en la parte superior del mapa, debera de aparecer modificando unos campos(en este codigo que pondre, solo es un textview) el titulo e informacion extra.
Para manejar los eventos al hacer clic usare una clase que ya viene en varios tutoriales, MyItemizedOverlay , y otra clase donde se va a mostrar el mapa, mapatest:


-------------------------------------MAPATEST-------------------------------------

package com.func.app;

import java.util.List;

import com.func.app.R;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;


import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.EditText;
import android.widget.TextView;


public class mapatest extends MapActivity {
private MapView mapView;
public static List<Overlay> mapOverlays;
GeoPoint point,point2;
OverlayItem overlayitem,overlayitem1;
public TextView titulo;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapa);
titulo=(TextView)findViewById(R.id.tituloanuncio);
//titulo.setText("a ver");
//comunica();
mapView = (MapView) findViewById(R.id.map_view);
//sets the zoom to see the location closer
mapView.getController().setZoom(12);

//this will let you to zoom in or out using the controllers
mapView.setBuiltInZoomControls(true);

List< Overlay > mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.googlei con);

MyItemizedOverlay itemizedoverlay = new MyItemizedOverlay(drawable, this);

GeoPoint point = new GeoPoint(46066940, 23570000);
//this will show you the map at the exact location you want (if you not set this you will see the map somewhere in America)
mapView.getController().setCenter(point);
OverlayItem overlayitem = new OverlayItem(point, "Title for dialog", "Alba Iulia City From Romania");

GeoPoint point2 = new GeoPoint(35410000, 139460000);
OverlayItem overlayitem2 = new OverlayItem(point2, "Title for dialog", "Japan");

itemizedoverlay.addOverlay(overlayitem);
itemizedoverlay.addOverlay(overlayitem2);
mapOverlays.add(itemizedoverlay);

}

@Override
protected boolean isRouteDisplayed() {
return false;
}

void comunica(){
this.titulo.setText("titulos");

System.out.println("Comunicando");
}


}
-------------------------------------------MyItemizedOverlay---------------------------------------

package com.func.app;

import android.content.Context;
import android.graphics.drawable.Drawable;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

import java.util.ArrayList;

/**
* Description
*
* @author : kazy
* Date: 3/23/12
*/
public class MyItemizedOverlay extends ItemizedOverlay {
private ArrayList< OverlayItem > mOverlays = new ArrayList< OverlayItem >();
Context mContext;



public MyItemizedOverlay(Drawable marker) {
super(boundCenterBottom(marker));
}

public MyItemizedOverlay(Drawable marker, Context context) {
super(boundCenterBottom(marker));
mContext = context;
}

public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}

@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}

@Override
public int size() {
return mOverlays.size();
}

@Override
protected boolean onTap(int i) {
mapatest ob=new mapatest();//Prueba nivel noob
ob.comunica();//Pruebas nivel noob
return true;
}
}

------------------------------------------------------------------------------------
Lo que yo tenia pensado era crear un metodo en mapatest comunica(como viene en el codigo),donde en ese codigo se modifica por settext, y en el metodo onTap de MyItemizedOverlay llamarlo para que al hacer clic se muestre la informacion en un textview, para probar hice un objeto de la clase mapatest y lo ejecute en onTap, obviamente no funciona, por lo que vengo aca con la duda ¿como puedo modificar desde onTap el textview de mapatest? Pense en esa solucion, pero si no es en onTap, corrijanme por favor,les agradezco a todos por leer el mensaje..
Saludos