我该如何提出此请求

时间:2018-04-11 11:10:02

标签: java android xml android-studio android-recyclerview

我所拥有的:一个应用程序,当你打开它时,它会显示一个带有3个按钮的地图,上面写着“餐厅”,“医院”,“酒吧”,一旦点击其中一个,他们就会向你展示这个附近的地方< / p>

我拥有的内容:对于美学问题,一个应用程序,当您打开时,它会显示带有图像的RecyclerView,当您单击其中一个图像时,会带您到当前位置的地图。

我想要的是:当我点击RecyclerView的一个图像(例如餐馆)时,它会显示我附近的餐馆的地图,但是我在OnBindViewHolder上的RecyclerView适配器中的O​​nClickListener发出此请求()方法

我的问题:如果Latitude和Longitude等元素在另一个Activity中,并且在一个名为OnMapReady()的方法中,我如何使用我最初的按钮发出请求,如何发出此请求。请通过代码示例欣赏答案,我仍然不擅长编程,并且有数百万条我不理解的术语,提前感谢

我的RecyclerView以及我想提出请求的地方

 @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        holder.etiNombre.setText(listalugares.get(position).getNombre());
        holder.foto.setImageResource(listalugares.get(position).getFoto());

        holder.foto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (position == 0){
                    Intent myIntent = new Intent(context, MapsActivity.class);
                    context.startActivity(myIntent);

                }
            }
        });
    }

我以前提出要求的地方

@Override
    public void onMapReady(GoogleMap googleMap) {//esta funcion es llamada cuando el mapa esta listo para usarse(1- locacion)
        mMap = googleMap;
        mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);//esto es lo que que dice de que forma queremos que se vea el mapa

        //Initialize Google Play Services
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ContextCompat.checkSelfPermission(this,
                    Manifest.permission.ACCESS_FINE_LOCATION)
                    == PackageManager.PERMISSION_GRANTED) {
                buildGoogleApiClient();
                mMap.setMyLocationEnabled(true);
            }
        }
        else {
            buildGoogleApiClient();
            mMap.setMyLocationEnabled(true);
        }
        Button btnRestaurant = (Button) findViewById(R.id.btnRestaurant);
        btnRestaurant.setOnClickListener(new View.OnClickListener() {
            String Restaurant = "restaurant";
            @Override
            public void onClick(View v) {
                Log.d("onClick", "Button is Clicked");
                mMap.clear();
                String url = getUrl(latitude, longitude, Restaurant);
                Object[] DataTransfer = new Object[2];
                DataTransfer[0] = mMap;
                DataTransfer[1] = url;
                Log.d("onClick", url);
                GetNearbyPlacesData getNearbyPlacesData = new GetNearbyPlacesData();
                getNearbyPlacesData.execute(DataTransfer);
                Toast.makeText(MapsActivity.this,"Nearby Restaurants", Toast.LENGTH_LONG).show();
            }
        });

1 个答案:

答案 0 :(得分:0)

要将数据从活动传递到另一个活动,您必须使用Intentextras字段。它是一个Bundle(一个键/值数据结构),您可以在其中存储您想要的所有内容(具有大小限制,因此通常只传递ID或类似内容,而不是实际数据)。< / p>

您可以在此处执行以下操作:在适配器的onClick方法中,向Intent添加一个额外字段,其中包含您要显示的信息类型(餐馆,酒吧或医院)。然后,在您的第二个活动(包含地图的活动)中,在onCreate方法中,阅读Intent中的字段。然后,您仍然可以在onMapReady方法中放置“附近位置”请求,使用该字段确定您要求的类型,而不是依赖于特定的按钮点击事件。