2016-05-25 53 views
0

我有一個主要佈局,谷歌地圖和RecyclerView的位置。從我的Recycler適配器我有OnClickListener,我需要在地圖上調用縮放,其中來自主佈局的屬性。如何從Android中的另一個類調用方法

回收適配器:

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

「主佈局」是一堂課嗎?如果是這樣,請使用zoomMap(double lat,double lng)方法static:public static zoomMap(double lat,double lng){....}。通過 .zoomMap(xxx.xxxxx,xxx.xxxxx)調用它,其中是zoomMap()方法所在的類的名稱。 – jaolstad

+0

你的'className.zoomMap()'。 –

回答

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); 

      } 
     }); 
    } 
} 
0

爲了從你不得不做出這樣的特定類的對象另一個類調用方法。

ClassName className = new ClassName(); 
viewHolder.btnMap.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       className.zoomMap(lat, lng); 

      } 
     }); 

快樂編碼。

+0

我那個選擇我有錯誤null異常。 TNX – godaddy

0

在第二個活動中創建Main類對象,然後在object.methed的下一個活動中調用。

0

下面是幾種方法: 1)你可以在需要調用靜態然後簡單的調用與

public static void zoomMap(double lat, double lng) 

然後

ClassWhereThisMethod.zoomMap(lat, lng); 

方法2)您可以在適配器中創建接口,然後在活動中將它的實現者設置爲「this」並實現此方法。然後你將能夠從適配器調用它。 3)在適配器中創建本地Runnable變量,然後將其設置在構造函數中,或者將其設置爲public並在適配器初始化時設置它,並使用zoomMap(lat,lng)傳遞runonable與runonuithread;在裏面。

相關問題