Я делаю мини-игру для рисования, и я создал этот класс, чтобы сохранить путь рисования с соответствующим цветом, и теперь мне нужно сохранить его, чтобы другие пользователи моего приложения могли go получить эти данные и увидеть рисунок на самом деле class CustomPath(path: android.graphics.Path, paint: android.graphics.Paint)
Но когда я делаю myRefDraw?.push()?.setValue((array))
, где массив является ArrayList, я получаю эту ошибку
"E / MessageQueue-JNI: com.google.firebase.database.DatabaseException: Сериализация коллекций не поддерживается , пожалуйста, используйте Lists вместо "
Есть ли лучший способ сохранить этот ArrayList где-нибудь, где другие игроки игры могли бы получить данные, которые он хранит, чтобы розыгрыш отображался на их соответствующих экранах?
Код:
class CanvasView(context: Context, attrs:AttributeSet?): View(context,attrs) {
private var mAuth: FirebaseAuth
private var mFirebaseDatabase:FirebaseDatabase
var paint: Paint = Paint()
var path: Path = Path()
var apagar: Boolean = false
var array = arrayListOf<CustomPath>()
private var database: FirebaseDatabase? = null
private var myRefDraw: DatabaseReference? = null
var c = CustomPath(path,paint)
override fun onDraw(canvas: Canvas) {
for (p in array) {
canvas.drawPath(p.getPath(), p.getPaint())
}
super.onDraw(canvas)
}
fun clear(){
array.clear()
invalidate()
}
override fun onTouchEvent(event: MotionEvent): Boolean {
when (event.action) {
MotionEvent.ACTION_DOWN -> {
path = Path()
path.moveTo(event.x, event.y)
c = CustomPath(path,paint)
array.add(c)
myRefDraw?.push()?.setValue((array))
}
MotionEvent.ACTION_MOVE -> {
path.lineTo(event.x, event.y)
invalidate()
}
MotionEvent.ACTION_UP -> {
}
}
return true
}
init {
paint.color = Color.BLACK
paint.style = Paint.Style.STROKE
paint.strokeWidth = 12f
paint.strokeJoin = Paint.Join.ROUND;
paint.strokeCap = Paint.Cap.ROUND;
mAuth = FirebaseAuth.getInstance();
mFirebaseDatabase = FirebaseDatabase.getInstance();
myRefDraw = mFirebaseDatabase.getReference("pathDraw");
}
}```
и
class CustomPath(path: android.graphics.Path, paint: android.graphics.Paint){
private var path: Path
private var paint: Paint
init {
this.paint = paint
this.path = path
}
fun setPath(path:Path){
this.path = path
}
fun getPath(): Path {
return this.path
}
fun setPaint(paint:Paint){
this.path = path
}
fun getPaint(): Paint {
return this.paint
}
}```