Сохранение настраиваемого объекта в firebase - PullRequest
0 голосов
/ 10 июля 2020

Я делаю мини-игру для рисования, и я создал этот класс, чтобы сохранить путь рисования с соответствующим цветом, и теперь мне нужно сохранить его, чтобы другие пользователи моего приложения могли 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
    }

}```

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...