我有一个主要布局,包含谷歌地图和RecyclerView
位置。从我的Recycler
适配器我OnClickListener
我需要在地图上调用缩放,其中属性来自主布局。
回收适配器:
viewHolder.btnMap.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
zoomMap(lat, lng);
}
});
主要布局:
public void zoomMap(double lat, double lng)
{
//String to display current latitude and longitude
String msg = lat + ", "+lng;
//Creating a LatLng Object to store Coordinates
LatLng latLng = new LatLng(lat, lng);
//Moving the camera
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
//Animating the camera
mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
//Displaying current coordinates in toast
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
答案 0 :(得分:0)
要从另一个类调用方法,您必须创建该特定类的对象。
ClassName className = new ClassName();
viewHolder.btnMap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
className.zoomMap(lat, lng);
}
});
快乐的编码。
答案 1 :(得分:0)
在第二个活动中创建主类对象,然后通过object.methed调用下一个活动。
答案 2 :(得分:0)
我建议你使用observer pattern:创建一个像MapZoomer这样的界面,用mapview实现你的界面,并从listview中调用界面方法。在代码中它看起来像:
interface MapZoomer{
public void zoomMap(double lat, double lng);
}
...
class MapActivity extends AppCompatActivity implements MapZoomer{
...
public void zoomMap(double lat, double lng){...}
}
...
class RecycleViewContainer{
MapZoomer zoomer;
public RecycleViewContainer(MapZoomer zoomer){
this.zoomer = zoomer;
...
viewHolder.btnMap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
zoomer.zoomMap(lat, lng);
}
});
}
}
答案 3 :(得分:0)
以下是几种方法: 1)您可以制作需要调用静态然后使用
进行简单调用的方法public static void zoomMap(double lat, double lng)
然后
ClassWhereThisMethod.zoomMap(lat, lng);
2)您可以在适配器中创建接口,然后在活动中将其实现设置为“this”并实现此方法。然后你就可以从适配器调用它了。
3)在适配器中创建本地Runnable变量,然后在构造函数中设置它或将其设置为public并在适配器初始化时设置它,并使用带有zoomMap(lat,lng)的runonuithread传递runnable;在它。