I want to take photos from firebase and add them to the custom map marker with the help of picasso. I was able to do this, but when the fragment was first opened it doesn't show the photos. The photos appear when switching between fragments. How can I solve this problem.
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;
}
}