Mohamed Al Sabbagh
Mohamed Al Sabbagh

Reputation: 91

Can't insert data from Sqlite in ListView

I'm trying to insert certain pieces of data of a user into a ListView, but can't seem to get any of them to show up.

This is how my code looks like so far. The issue is in the last two classes (Invite_Page.xaml.cs and Invite_Page.xaml), but I also pasted my notes from other classes which could be relevant.:

User.cs:

public class User {

    public string fName { get; set; }

    public string lName { get; set; }

    public string uName { get; set; }

    public string Pw { get; set; }

    // public string cls { get; set; }

}

fName and lName are both Strings

DatabaseManager.cs:

public class DatabaseManager
{
   SQLiteConnection dbConnection;
   public DatabaseManager()
   {
      dbConnection = DependencyService.Get<IDBInterface>().CreateConnection();
   }

   public List<User> GetAllUsers()
      return dbConnection.Query<User>("Select * From [User]");

   public int SaveUser(User aUser)
   {
      //dbConnection.CreateTable<User>();
      //return 1;
      return dbConnection.Insert(aUser);
   }

   public List<User> GetAllNames()
      return dbConnection.Query<User>("Select fName, lName From [User] ORDER BY fName;");

   //.....

Invite_Page.xaml:

<ListView 
      x:Name="invitees"
      SeparatorColor="White"
      BackgroundColor="Transparent"
      ItemsSource="{Binding invitees}"
      IsGroupingEnabled="true"
      IsPullToRefreshEnabled="true"
      ItemTapped="Handle_ItemTapped">
   <ListView.ItemTemplate>
      <DataTemplate>
         <TextCell Text="{Binding}" TextColor="White"/>
      </DataTemplate>
   </ListView.ItemTemplate>
</ListView>

Invite_Page.xaml.cs:

DatabaseManager DBM = new DatabaseManager();

   // List<User> Invitees(String SearchText = null) 
   // {
       // invitees.ItemsSource = DBM.GetAllNames();
       // return Invitees();
   // }
   protected override void OnAppearing()
   {
      base.OnAppearing();
      invitees.ItemsSource = DBM.GetAllNames();
   }

In the Invite_Page.xaml.cs code, you can see that I tried inputting the data by using the code that is commented out. The result of that was that nothing showed up in the list. But with the second method which isn't commented out, the result was that "RoseySports.User" was placed in the ListView. I'm trying to make it so that the values of fName and lName are put together as one string, and are placed in the ListView.

This is what it looks like at the moment

Upvotes: 0

Views: 71

Answers (3)

Miamy
Miamy

Reputation: 2299

The easiest way is to override ToString() method of the User class:

public override string ToString()
{
   return fName + " " + lName;
}

The other option is to build more complicated DataTemplate as @ViralThakker mentioned.

P.S. The line ItemsSource="{Binding invitees}" in your XAML is unusable if you are assigning ItemsSource in code.

Upvotes: 1

Viral Thakker
Viral Thakker

Reputation: 547

You need to create Custom List item template to display value from your object.

For example you want to display fName,lName and uName then you'll have to use below code for binding values to list item

             <DataTemplate>
                    <ViewCell>

                            <StackLayout Orientation="Vertical" Padding="10">
                                 <Label Text="{Binding fName}" TextColor="White"/>
                                 <Label Text="{Binding lName}" TextColor="White"/>
                                 <Label Text="{Binding uName}" TextColor="White"/>
                            </StackLayout>

                    </ViewCell>
                </DataTemplate>

Upvotes: 1

Athan CB
Athan CB

Reputation: 29

First, you have to specify what you really want from the model of User to the TextCell that you use binding. You set as ItemSource Users, but you just set TextCell Binding without any variable. Try to set Text={Binding fName} for example. Second, try to use ViewModel to populate data. Learn more here: https://learn.microsoft.com/en-us/xamarin/xamarin-forms/enterprise-application-patterns/mvvm

Upvotes: 1

Related Questions