[OFFEN] TextView verändert Inhalt nicht, nachdem anderer Map Marker angeklickt wird

P

Peter200980

Ambitioniertes Mitglied
0
Hallo Zusammen,

für meine Map versuche ich gerade mir eine "Preview" zu basteln, die ein paar Infos über den angeklickten Marker anzeigen soll. Leider funktioniert es nicht so richtig, da immer der Inhalt eines JSON "reiters" angezeigt, egal welcher Marker geklickt wird.
Anbei noch meine MapsActivity, in der alles ablaufen soll. Die Preview ist das Layout "prev"
Code:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
{
    private ProgressDialog pDialog;
    private GoogleMap mMap;
    private static String url="";
    ArrayList<HashMap<String, String>> contactList;
    private String TAG = MainActivity.class.getSimpleName();
    double latitude;
    double longitude;
    String namec;
   ImageView bmImage;
    String Imageurl;

    @Override
    protected void onCreate( Bundle savedInstanceState) {

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
       contactList = new ArrayList<>();
       SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map3);
        mapFragment.getMapAsync(this);
        ImageButton locations = (ImageButton) findViewById(R.id.btnloc);
        locations.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MapsActivity.this, MainActivity.class);
                startActivity(i);
            }
        });

    }



    private class GetContacts extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();


        }

        @Override
        protected Void doInBackground(Void... arg0) {
            HttpHandler sh = new HttpHandler();


            String jsonStr = sh.makeServiceCall(url);

            Log.e(TAG, "Response from url: " + jsonStr);

            if (jsonStr != null) {
                try {
                    JSONObject jsonObj = new JSONObject(jsonStr);


                    JSONArray contacts = jsonObj.getJSONArray("contacts");


                    for (int i = 0; i < contacts.length(); i++) {
                        JSONObject c = contacts.getJSONObject(i);

                        String id = c.getString("id");
                        String name = c.getString("name");
                        String street = c.getString("street");
                        String postalcode = c.getString("postalcode");
                        String musicstyle = c.getString("musicstyle");
                        String musicsecond = c.getString("musicsecond");
                        String entry = c.getString("entry");
                        String opening = c.getString("opening");
                        String agegroup = c.getString("agegroup");
                        String imageurl = c.getString("imageurl");
                        String urlbtn = c.getString("urlbtn");
                        String Fsk = c.getString("Fsk");
                        String city = c.getString("city");
                        String lat = c.getString("lat");
                        String lng = c.getString("lng");




                        // tmp hash map for single contact
                        HashMap<String, String> contact = new HashMap<>();

                        // adding each child node to HashMap key => value
                        contact.put("id", id);
                        contact.put("name", name);
                        contact.put("street",street);
                        contact.put("postalcode",postalcode);
                        contact.put("musicstyle",musicstyle);
                        contact.put("musicsecond",musicsecond);
                        contact.put("entry",entry);
                        contact.put("opening",opening);
                        contact.put("agegroup",agegroup);
                        contact.put("imageurl",imageurl);
                        contact.put("urlbtn",urlbtn);
                        contact.put("Fsk",Fsk);
                        contact.put("city",city);
                        contact.put("lat", lat);
                        contact.put("lng", lng);

                        latitude = Double.parseDouble(lat); longitude = Double.parseDouble(lng);
                        contactList.add(contact);
                        namec = lat;
                        Imageurl = imageurl;



                    }
                } catch (final JSONException e) {
                    Log.e(TAG, "Json parsing error: " + e.getMessage());
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getApplicationContext(),
                                    "Json parsing error: " + e.getMessage(),
                                    Toast.LENGTH_LONG)
                                    .show();
                        }
                    });

                }
            } else {
                Log.e(TAG, "Couldn't get json from server.");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(),
                                "Couldn't get json from server. Check LogCat for possible errors!",
                                Toast.LENGTH_LONG)
                                .show();
                    }
                });

            }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);

            for (final HashMap<String, String> contact: contactList) {

                LatLng P1 = new LatLng(
                            Double.parseDouble(contact.get("lat")),
                        Double.parseDouble(contact.get("lng")));

                mMap.addMarker(new MarkerOptions().position(P1).title(contact.get("name")));


                mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

                    @Override
                    public void onMapClick(LatLng latLng) {
                        LinearLayout prev = (LinearLayout) findViewById(R.id.schwanz);
                        Animation slideDown = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);

                        if(prev.getVisibility()==View.VISIBLE){

                            prev.startAnimation(slideDown);
                            prev.setVisibility(View.INVISIBLE);
                        }


                    }
                });
                mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                    @Override
                    public boolean onMarkerClick(Marker marker) {
                        LinearLayout prev = (LinearLayout) findViewById(R.id.schwanz);

                        ImageView imgprev = (ImageView) findViewById(R.id.imgprev);
                        Picasso.with(getBaseContext())
                                .load(contact.get("imageurl"))

                                .into(imgprev );
                        TextView namepren= (TextView) findViewById(R.id.nameprev);
                        namepren.setText(contact.get("name"));
                        Animation slideUp = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_up);
                        Animation slideDown = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);

                        if(prev.getVisibility()==View.INVISIBLE){

                            prev.startAnimation(slideUp);
                            prev.setVisibility(View.VISIBLE);

                        }


                        return false;

                }

                });




            }

        }

    }
    @Override
    public void onMapReady(GoogleMap googleMap) {

        mMap = googleMap;
        new GetContacts().execute();
        mMap.setMyLocationEnabled(true);




    }


}
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
10
Aufrufe
220
swa00
swa00
Gemini-Media
Antworten
1
Aufrufe
1.840
swa00
swa00
SaniMatthias
Antworten
19
Aufrufe
955
swa00
swa00
Zurück
Oben Unten