首页 > 解决方案 > Android自定义标记加载问题,毕加索

问题描述

我想在 picasso 的帮助下从 firebase 拍照并添加到自定义地图标记中。我能够做到这一点,但是当第一次打开片段时,它没有显示照片。照片在片段之间切换时出现。我怎么解决这个问题。

   public class SecondFragment extends Fragment {
static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 23;
boolean konum=false;
konumModel konumModel;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference reference = database.getReference("konumlar");
int count=0;
List<String> k1,k2,baslık,key,resim;
List<Double> loc1,loc2;
SharedPreferences sharedPreferences;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_second, container, false);
            SupportMapFragment supportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
    k1=new ArrayList<>();
    k2=new ArrayList<>();
    baslık=new ArrayList<>();
    key=new ArrayList<>();
    resim=new ArrayList<>();
    loc1=new ArrayList<>();
    loc2=new ArrayList<>();
            supportMapFragment.getMapAsync(new OnMapReadyCallback() {
                @Override
                public void onMapReady(GoogleMap googleMap) {

                    reference.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
                            k1.clear();
                            k2.clear();
                            for(DataSnapshot d:snapshot.getChildren()){
                                konumModel=d.getValue(konumModel.class);
                                k1.add(konumModel.getKonum1());
                                k2.add(konumModel.getKonum2());
                                key.add(konumModel.getKey());
                                baslık.add(konumModel.getText());
                                resim.add(konumModel.getResim());
                                double latitude = Double.parseDouble(k1.get(count));
                                double longitude = Double.parseDouble(k2.get(count));
                                String keya=key.get(count);
                                String bas=baslık.get(count);
                                String res=resim.get(count);

                                LatLng location = new LatLng(latitude,longitude);
                                    Picasso.get()
                                            .load(res)
                                            .resize(200,200)
                                            .centerCrop()
                                            .transform(new CircleBubbleTransformation())
                                            .into(new com.squareup.picasso.Target(){
                                                @Override
                                                public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                                                    System.out.println(count);
                                                    Marker driver_marker = googleMap.addMarker(new MarkerOptions()
                                                            .position(location)
                                                            .icon(BitmapDescriptorFactory.fromBitmap(bitmap))
                                                            .title(bas)
                                                            .snippet(keya));
                                                }

                                                @Override
                                                public void onBitmapFailed(Exception e, Drawable errorDrawable) {

                                                }

                                                @Override
                                                public void onPrepareLoad(Drawable placeHolderDrawable) {

                                                }
                                            });
                                count++;

                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError error) {

                        }

                    });




                    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                        // TODO: Consider calling
                        //    ActivityCompat#requestPermissions
                        // here to request the missing permissions, and then overriding
                        //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                        //                                          int[] grantResults)
                        // to handle the case where the user grants the permission. See the documentation
                        // for ActivityCompat#requestPermissions for more details.
                        return;
                    }
                    googleMap.setMyLocationEnabled(true);
                    googleMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
                        @Override
                        public void onMyLocationChange(Location location) {
                            LatLng latlng=new LatLng(location.getLatitude(),location.getLongitude());
                            CameraUpdate cameraUpdate= CameraUpdateFactory.newLatLngZoom(
                                    latlng, 15);
                            if(konum==false){
                                googleMap.animateCamera(cameraUpdate);
                                konum=true;
                            }
                        }
                    });
                    googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
                        @Override
                        public void onMapClick(LatLng latLng) {

                            MarkerOptions markerOptions = new MarkerOptions();
                            markerOptions.position(latLng);

                            markerOptions.title(latLng.latitude+" : "+latLng.longitude);
                            ArrayList<String> a = new ArrayList<String>();
                            googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,15));

                            Intent i = new Intent(getActivity(), mapFromActivity.class);
                            a.add(String.valueOf(latLng.latitude));
                            a.add(String.valueOf(latLng.longitude));
                            i.putExtra("title",a);
                            startActivity(i);
                        }

                    });
                    googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                        @Override
                        public boolean onMarkerClick(Marker marker) {

                            Intent i = new Intent(getActivity(), MapTempActivity.class);
                            String b= marker.getSnippet();
                            i.putExtra("item",b);
                            startActivity(i);

                            return false;
                        }
                    });




                }

            });


    return view;

}

}

首次打开时

当我更改片段并再次打开它时。

标签: androidfirebasegoogle-mapsgoogle-maps-markerspicasso

解决方案


推荐阅读