WebHU - Programozási kérdések és válaszok

Esemény kiváltása a tevékenységben az MvvmCross használatával

Van egy MvxFragmentActivity-m, amely betölt egy Google térképet, és jelölőket helyez el a térképen. A térkép és a jelölők létrehozásához használt kód nagyon Droid-specifikus, így a tevékenységben található. A markerek a ViewModel objektumai alapján jönnek létre, amelyek mindegyike szélességi/hosszúsági koordinátákat tartalmaz. Ez jól működött mindaddig, amíg az objektumokat az Init metódusomban töltöttem be. Azóta áthelyeztem a load objects metódust egy szolgáltatásba, és egy másik szálon hívtam meg. Így a felhasználói felület érzékeny. Azonban hogyan hívhatom meg a metódust a tevékenységben, amikor a betöltés befejeződött?

Íme az aktuális kódom a tevékenységben (ez a kód nem változhat, csak a neve):

    private void InitMapFragment()
    {
        foreach (var item in viewModel.Items)
        {
            var icon = BitmapDescriptorFactory.FromResource(Resource.Drawable.place_img);
            var markerOptions = new MarkerOptions()
                .SetPosition(new LatLng(item.Latitude, item.Longitude))
                .InvokeIcon(icon)
                .SetSnippet(item.DistanceText)
                .SetTitle(item.Name);
            var marker = _map.AddMarker(markerOptions);
            _markerIds.Add(marker.Id, item.Id);
        }
   }

Kód az én viewModelben:

    private void BeginLoadItems()
    {
        _loadItemsService.Load();
    }

    // This is triggered by a message
    private void OnLoadItemsComplete(LoadCompleteMessage message)
    {
        Items = message.Items;
    }

Kód a szolgáltatásomban:

    public void Load()
    {
        ThreadPool.QueueUserWorkItem(state =>
            {
                var results = _repository.Retrieve();
                _messenger.Publish(new LoadCompleteMessage(this, results));
            });
    }
26.07.2013

Válaszok:


1

Ön már elindít egy eseményt, amikor beállítja:

    Items = message.Items;

Ez aktiválja a PropertyChanged tulajdonságot, amelynek a tulajdonság neve "Elemek"

A térképkötéssel kapcsolatos további információkért lásd: Az MvvmCross használatával hogyan köthetem a jegyzetek listáját a MapView-hoz? – bár Droid esetén a megjegyzések helyett jelölőket kell használnia.

26.07.2013
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..