androidlistobjectdatastoreproto

How to save a list of objects with Proto DataStore


If I have the following class, how can I save a list of it with Proto DataStore?

data class Tag(
    val id: int,
    val name: String
)

All guides that I saw were teaching how to save only a single object. Is it possible to have a list of it?


Solution

  • You should consider storing list of content in Room, Even proto-datastore isnt a proper solution to store complex stuff,

    If you still want then, I will suggest you to restrict the data stored to 10-15 items

    to the code --->

    1. Create your proto file, repeated is used to create list type for Java
    message Student {
      string id = 1;
      string name = 2;
    }
    
    message ClassRoom {
      string teacher = 1;
      repeated Student students  = 2; // repeated => list
    }
    
    
    1. Inside your proto-store,
    dataStore.updateData { store ->
           store.toBuilder()
          .clearStudents() // clear previous list
          .setAllStudents(students)// add the new list
          .build()
    }
    
    
    

    if you want example checkout my sample app, read the data/domain layer https://github.com/ch8n/Jetpack-compose-thatsMine