Android Question Saving and loading data of a self defined type

Discussion in 'Android Questions' started by Tjitte Dijkstra, Apr 16, 2015.

  1. Tjitte Dijkstra

    Tjitte Dijkstra Member Licensed User

    I try to save names and ages of people who play the little game that I develop.
    I defined a type INI (see Process_Globals below) and defined INIval as a variable for 1 person and INIvalues as a list for a lot of persons.
    In SAVE_Click the List is saved. So far so good, BUT
    In LOAD_Click I get an error: ClassCastException:Java.Lang.String cannot be cast

    How to avoid this?
    TD NL 3843 XP
    SOURCE CODE:

    Sub Process_Globals
    Type INI (FamilyName As String, Age As Int)
    End Sub

    Sub Globals
    Dim INIval As INI
    Dim INIvalues As List

    Private LOAD As Button 'to retrieve data from file
    Private Naam As EditText 'to get the familyname
    Private RESULT As Label 'to present the retrieved data
    Private SAVE As Button 'to save the list
    Private Age As EditText 'to get the age
    End Sub

    Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main") 'you can image what it looks like?
    INIval.Initialize()
    INIvalues.Initialize()
    End Sub

    Sub Naam_EnterPressed
    INIval.FamilyName = Naam.Text
    End Sub

    Sub Age_EnterPressed
    INIval.Age = Age.text
    End Sub

    Sub SAVE_Click
    INIvalues.Add(INIval)
    File.WriteList(File.DirRootexternal, "TEST.ini", INIvalues)
    End Sub

    Sub LOAD_Click
    INIvalues = File.ReadList(File.DirRootexternal, "TEST.ini")
    INIval = INIvalues.Get(0)
    RESULT.Text = INIval.FamilyName & " " & INIval.Age
    End Sub
     
  2. fixit30

    fixit30 Active Member Licensed User

    Because you are using a list of custom types this will not work.

    You will need to use the RandomAccessFile library and use the WriteObject and ReadObject methods.
     
    lemonisdead likes this.
  3. derez

    derez Expert Licensed User

    I also don't understand the reason by I managed to get the data like this:
    Code:
    Sub LOAD_Click
    INIvalues = 
    File.ReadList(File.DirRootexternal, "TEST.ini")
    INIval = INIvalues.Get(
    0)
    Dim str(), stn(),sta() As String
    str = 
    Regex.Split(",",INIval)
    stn = 
    Regex.Split("=",str(0))
    sta = 
    Regex.Split("=",str(1))
    RESULT.Text = stn(
    1) & "  " & sta(1)
    End Sub
    I guess you should use a RandomAccessFile and not a text file for a list of custom type. (Written before I saw the previous post...)
     
  4. Erel

    Erel Administrator Staff Member Licensed User

    Note that you can also use KeyValueStore class. It is simpler and more powerful.
     
    lemonisdead likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice