In this blog post, you will learn how to use CollectionView instead of ListView in Xamarin.Forms.
IntroductionXamarin.Forms code runs on multiple platforms - each of which has its own filesystem.
This means that reading and writing files is most easily done using the native file APIs on each platform. Alternatively, embedded resources are a simpler solution to distribute data files with an app.
CollectionView
CollectionView is introduce in the Xamarin.Forms 4.0 pre-releases. CollectionView is a view for presenting lists of data using different layout specifications.
It aims to provide a more flexible, and performant alternative to ListView.
- CollectionView supports single and multiple selection.
- CollectionView has a flexible layout model, which allows data to be presented vertically or horizontally.
- CollectionView is only available on iOS and Android.
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/collectionview/
Prerequisites
- Visual Studio 2017 or later (Windows or Mac)
Start by creating a new Xamarin.Forms project. You’ll learn more by going through the steps yourself.
Visual Studio 2019 has more options in the opening window. Clone or check out the code from any repository or, open a project or solution for your computer.
Now, you need to click "Create a new project".
Now, filter by Project Type: Mobile
Choose the Mobile App (Xamarin. forms) project under C# and Mobile.
Name your app. You probably want your project and solution to use the same name as your app. Put it on your preferred location for projects and click "Create".
Now, select the blank app and target platforms - Android, iOS and Windows (UWP).
Subsequently, go to the solution. In there, you get all the files and sources of your project (.NET Standard). Now, select the XAML page and double-click to open the MainPage.Xaml page.
You now have a basic Xamarin.Forms app. Click the Play button to try it out.
Note:
Before you initialize Xamarin.Forms in your MainActivity.cs and AppDelegate. Add following Flag
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Forms.SetFlags("CollectionView_Experimental"); |
MainActivity.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protected override void OnCreate(Bundle savedInstanceState) | |
{ | |
TabLayoutResource = Resource.Layout.Tabbar; | |
ToolbarResource = Resource.Layout.Toolbar; | |
base.OnCreate(savedInstanceState); | |
global::Xamarin.Forms.Forms.SetFlags("CollectionView_Experimental"); | |
Xamarin.Essentials.Platform.Init(this, savedInstanceState); | |
global::Xamarin.Forms.Forms.Init(this, savedInstanceState); | |
LoadApplication(new App()); | |
} |
AppDelegate.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public override bool FinishedLaunching(UIApplication app, NSDictionary options) | |
{ | |
global::Xamarin.Forms.Forms.SetFlags("CollectionView_Experimental"); | |
global::Xamarin.Forms.Forms.Init(); | |
LoadApplication(new App()); | |
return base.FinishedLaunching(app, options); | |
} |
Now, Implement the collectionview with data binding.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8" ?> | |
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" | |
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" | |
xmlns:d="http://xamarin.com/schemas/2014/forms/design" | |
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |
mc:Ignorable="d" | |
x:Class="CollectionViewChallenge.Views.CollectionViewChallengePage"> | |
<ContentPage.Content> | |
<StackLayout BackgroundColor="White"> | |
<!-- Use your own layout and functionality here! --> | |
<CollectionView x:Name="collectionList" Margin="10"> | |
<CollectionView.ItemTemplate> | |
<DataTemplate> | |
<Grid Padding="10" Margin="10"> | |
<Grid.RowDefinitions> | |
<RowDefinition Height="Auto" /> | |
<RowDefinition Height="Auto" /> | |
</Grid.RowDefinitions> | |
<Grid.ColumnDefinitions> | |
<ColumnDefinition Width="Auto" /> | |
<ColumnDefinition Width="Auto" /> | |
<ColumnDefinition Width="Auto" /> | |
</Grid.ColumnDefinitions> | |
<Frame BackgroundColor="White" Grid.RowSpan="2" CornerRadius="5" Padding="10"> | |
<Image | |
Source="iphone6.jpeg" | |
Aspect="AspectFill" | |
HeightRequest="100" | |
WidthRequest="100" /> | |
</Frame> | |
<Label Grid.Column="1" | |
Text="{Binding Title}" | |
FontAttributes="Bold" /> | |
<Label Margin="0,20,0,0" Grid.Column="1" | |
Text="{Binding Description}" | |
FontAttributes="Bold" /> | |
<Label Grid.Row="1" | |
Grid.Column="1" | |
Text="{Binding Price}" | |
VerticalOptions="End" /> | |
<Frame Grid.Row="0" | |
Grid.Column="2" BackgroundColor="Pink" Padding="10"> | |
<Label TextColor="White" | |
Text="{Binding Percentage}" | |
VerticalOptions="Start" /> | |
</Frame> | |
<Image Grid.Row="1" Grid.Column="2" | |
Source="star.png" | |
HeightRequest="5" | |
WidthRequest="5" /> | |
</Grid> | |
</DataTemplate> | |
</CollectionView.ItemTemplate> | |
</CollectionView> | |
</StackLayout> | |
</ContentPage.Content> | |
</ContentPage> |
Now, add ItemSource to CollectionView
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Xamarin.Forms; | |
using Xamarin.Forms.Xaml; | |
namespace CollectionViewChallenge.Views | |
{ | |
[XamlCompilation(XamlCompilationOptions.Compile)] | |
public partial class CollectionViewChallengePage : ContentPage | |
{ | |
public CollectionViewChallengePage() | |
{ | |
InitializeComponent(); | |
} | |
protected override void OnAppearing() | |
{ | |
base.OnAppearing(); | |
List<ListItem> listItems = new List<ListItem>(); | |
ListItem listItem = new ListItem() {Title="iPhone",Description="2GB RAM, 16GB Internal", Price="$500" ,Percentage="50%"}; | |
ListItem listItem1 = new ListItem() { Title = "iPhone", Description = "2GB RAM, 16GB Internal", Price = "$500", Percentage = "50%" }; | |
ListItem listItem2 = new ListItem() { Title = "iPhone", Description = "2GB RAM, 16GB Internal", Price = "$500", Percentage = "50%" }; | |
ListItem listItem3 = new ListItem() { Title = "iPhone", Description = "2GB RAM, 16GB Internal", Price = "$500", Percentage = "50%" }; | |
listItems.Add(listItem); | |
listItems.Add(listItem1); | |
listItems.Add(listItem2); | |
listItems.Add(listItem3); | |
collectionList.ItemsSource = listItems; | |
} | |
} | |
} |
I hope you have understood how to use CollectionView instead of ListView in Xamarin.Forms..
Thanks for reading. Please share your comments and feedback. Happy Coding :)
Can you explain mvvm binding with collection view,icommand implementation for child control inside the datatemplate
ReplyDeleteThank you so much for sharing this excellent information. Your article is amazing. Good to discover your post
ReplyDeleteHire Xamarin Developer Texas, USA
I think about it is most required for making more on this get engaged.
ReplyDeleteData Science Training
Thanks for sharing this informative content , Great work
ReplyDeleteLeanpitch provides online training in Scrum Master during this lockdown period everyone can use it wisely.
CSM online
Thanks for sharing this informative content , Great work
ReplyDeleteLeanpitch provides online training in Scrum Master during this lockdown period everyone can use it wisely.
CSM online certification
Thanks for sharing this informative content , Great work
ReplyDeleteLeanpitch provides online training in Product prototyping during this lockdown period everyone can use it wisely.
icp-cat training
Thanks for sharing this informative content , Great work
ReplyDeleteLeanpitch provides online training in Enterprise agile coaching during this lockdown period everyone can use it wisely.
Enterprise agile coaching
Very good points you wrote here..Great stuff...I think you've made some truly interesting points.Keep up the good work.
ReplyDeletedata science course
This is the first time I visit here. I found such a large number of engaging stuff in your blog, particularly its conversation. From the huge amounts of remarks on your articles, I surmise I am by all accounts not the only one having all the recreation here! Keep doing awesome. I have been important to compose something like this on my site and you have given me a thought.
ReplyDelete360DigiTMG, the top-rated organisation among the most prestigious industries around the world, is an educational destination for those looking to pursue their dreams around the globe. The company is changing careers of many people through constant improvement, 360DigiTMG provides an outstanding learning experience and distinguishes itself from the pack. 360DigiTMG is a prominent global presence by offering world-class training. Its main office is in India and subsidiaries across Malaysia, USA, East Asia, Australia, Uk, Netherlands, and the Middle East.
ReplyDeleteXamarin Monkeys: Xamarin.Forms - Collectionview >>>>> Download Now
ReplyDelete>>>>> Download Full
Xamarin Monkeys: Xamarin.Forms - Collectionview >>>>> Download LINK
>>>>> Download Now
Xamarin Monkeys: Xamarin.Forms - Collectionview >>>>> Download Full
>>>>> Download LINK PC
Xamarin Monkeys: Xamarin.Forms - Collectionview >>>>> Download Now
ReplyDelete>>>>> Download Full
Xamarin Monkeys: Xamarin.Forms - Collectionview >>>>> Download LINK
>>>>> Download Now
Xamarin Monkeys: Xamarin.Forms - Collectionview >>>>> Download Full
>>>>> Download LINK Bp