Android Kotlin - Firestore загрузка и отображение изображений - PullRequest
0 голосов
/ 22 мая 2018

В данный момент в качестве примера я воссоздаю пост в стиле Instagram, где пользователь может опубликовать описание и изображение (вместе с именем пользователя, поскольку я все еще не настраиваю аутентификацию).Насколько я могу указать только имя пользователя и описание.Кроме того, я могу загрузить новое изображение в качестве источника в изображение на экране.

Мой класс данных:

data class Post(val username: String,
                val timestamp: Date,
                val postTxt: String,
                val numLikes: Int,
                val numComments: Int,
                val documentId: String)

Я помещаю данные в хэш-карту следующим образом:

val data = hashMapOf(
                NUM_LIKES to 0,
                NUM_COMMENTS to 0,
                POST_TXT to addPostTxt.text.toString().trim(),
                TIMESTAMP to FieldValue.serverTimestamp(),
                USERNAME to addUsernameTxt.text.toString().trim()
        )

, а затем передать его для загрузки в firestore:

FirebaseFirestore.getInstance().collection(POST_REF)
                .add(data)
                .addOnSuccessListener { finish() }
                .addOnFailureListener {
                    Log.e("Exception", "Could not add post: $it")
                    toast("Could not add post")
                }

И для получения данных я создал функцию, которая делает снимок типа QuerySnapshot, например:

// Clear all the posts before relaod
        posts.clear()

        snapshot.documents.forEach { document ->
            val data = document.data
            val name = data?.get(USERNAME) as String
            val timestamp = data[TIMESTAMP] as Date
            val postTxt = data[POST_TXT] as String
            val numLikes = data[NUM_LIKES] as Long
            val numComments = data[NUM_COMMENTS] as Long
            val documentId = document.id

            val newPost = Post(name, timestamp, postTxt, numLikes.toInt(), numComments.toInt(), documentId)

            posts.add(newPost)
        }

        postsAdapter.notifyDataSetChanged()

Пока загрузка текста, текущее время загрузки отлично работает как для загрузки, так и для чтения из базы данных;однако мой вопрос здесь: - Каков наилучший способ (следуя текущей базе кода) загрузить изображение в хранилище и хранилище и соответствующим образом отобразить его в главном окне (желательно с помощью Glide или Picasso)?

1 Ответ

0 голосов
/ 22 мая 2018

Обычно в Firestore хранить двоичные данные, например изображения, не очень хорошая идея.Вы можете очень легко превысить предел для объема данных, который вы можете хранить в документе, который составляет 1 МБ.Большие документы также требуют больше времени для загрузки на клиенте, что еще хуже, если вам даже не нужно использовать изображение во время чтения.

Вместо этого рассмотрите возможность загрузки изображения в облачное хранилище исохранить путь к этому месту в поле в вашем документе.Затем, когда пришло время отобразить изображение, загрузите его оттуда.

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