.NET MAUI Basit Webservice İşlemi ve ListView ile Gösterim

Merhabalar,

.NET MAUI giriş yazılarımda “bazı durumlarda” Xamarin.Forms üzerinde geliştirdiğimiz bir işlemi aynı şekilde devam ettirebileceğimizden bahsetmiştim. Bununla alakalı da en basit ve çokça ihtiyaç duyduğumuz ListView üzerinden örnek yapalım.

Çok basit bir şekilde HttpClient GetStringAsync ile servisi consume edeceğiz.

    internal class Provider
    {
        private static HttpClient _httpClient;
        public HttpClient HttpClient 
        {
            get
            {
                if (_httpClient == null)
                    _httpClient = new HttpClient();
                return _httpClient;
            }
        }

        public async Task<List<User>> GetUsers()
        {
            var response = await HttpClient.GetStringAsync("https://jsonplaceholder.typicode.com/users");
            if (!String.IsNullOrEmpty(response))
                return JsonConvert.DeserializeObject<List<User>>(response);
            return new List<User>();
        }
    }
}

Genelde bu tarz örnekler için hazır json dönen web sitelerini tercih ediyorum. Öneki örneklerimde de bu siteden faydalanmıştım.

https://jsonplaceholder.typicode.com/

users endpointini kullanacağım. Fakat C# tarafında bunu bir objeye cast etmem gerektiği için Json2Csharp sitesi ile bunu gerekli objeyi otomatik oluşturdum.

   public class User
    {
        public int id { get; set; }
        public string name { get; set; }
        public string username { get; set; }
        public string email { get; set; }
        public Address address { get; set; }
        public string phone { get; set; }
        public string website { get; set; }
        public Company company { get; set; }
    }
    public class Geo
    {
        public string lat { get; set; }
        public string lng { get; set; }
    }

    public class Address
    {
        public string street { get; set; }
        public string suite { get; set; }
        public string city { get; set; }
        public string zipcode { get; set; }
        public Geo geo { get; set; }
    }

    public class Company
    {
        public string name { get; set; }
        public string catchPhrase { get; set; }
        public string bs { get; set; }
    }

Xamarin.Forms üzerinde kullandığımız şekilde bir ListView kullandım.

<StackLayout Orientation="Vertical" Margin="10">

			<ListView HasUnevenRows="True" x:Name="lstUsers">
				<ListView.ItemTemplate>
					<DataTemplate>
							<TextCell Text="{Binding name}" Detail="{Binding email}"
									  TextColor="Black" DetailColor="Brown"/>
					</DataTemplate>
				</ListView.ItemTemplate>
			</ListView>

        </StackLayout>

MainPage.cs içerisinde yardımcı sınıfları kullandım.

Provider _provider;
    public List<User> Users;
    public MainPage()
    {
        InitializeComponent();
        _provider = new Provider();
        LoadUsers();
    }

    private async Task LoadUsers()
    {
        Users = new List<User>();
        var users = await _provider.GetUsers();
        foreach (var item in users)
        {
            Users.Add(item);
        }
        lstUsers.ItemsSource = Users;
    }

.NET MAUI ile gelen hiçbir yeniliği kullanmadan Xamarin.Forms’dan gelen kullanımlarımıza devam edebiliyoruz. Daha önce geliştirdiğimiz “Xamarin.Forms üzerinde Katmanlı Mimari” yazı serisini MAUI için de yazacağım.

Yiğit

Xamarin Developer, Consultant & Architect. Community Leader and Director of Xamarin Türkiye

Post A Reply