Добавить два MutableList в Android - PullRequest
       0

Добавить два MutableList в Android

0 голосов
/ 15 февраля 2019

Интересно, почему totalList будет отображать ноль.У меня есть 2 MutableList

var totalList  : MutableList<String>?=null
var listOfImagesPath: MutableList<String>? = null

. listOfImagesPath будет использоваться для получения всего изображения с телефона.Я хотел бы добавить listOfImagesPath к totalList

listOfImagesPath = RetriveCapturedImagePath()
totalList?.add(listOfImagesPath.toString())

Я проверяю их размер, используя следующий код

longToast("list" +listOfImagesPath?.size.toString())
longToast("total "+totalList?.size.toString())

Выход

5
null

Почему я получу нулевое значение?

Редактировать

Чего я хотел бы добиться, так это, чтобы захваченное изображение и изображение, выбранное из галереи, отображались в gridView.

CameraCapture

 listOfImagesPath?.clear()
 listOfImagesPath = RetriveCapturedImagePath()
 totalList?.addAll(listOfImagesPath!!)
 grid.setAdapter(ImageListAdapter(this, totalList))

Выбор изображения из галереи

   val bitmap = MediaStore.Images.Media.getBitmap(getActivity()?.getContentResolver(), uri);
    val bytes = ByteArrayOutputStream();
    bitmap?.compress(Bitmap.CompressFormat.JPEG, 90, bytes)
    val path = getRealPathFromURI(uri)
    listOfImagesPath = RetriveCapturedImagePath()
      if(listOfImagesPath?.size!=0){
         totalList.addAll(listOfImagesPath!!)
     }
      totalList.add(path)
      grid.setAdapter(ImageListAdapter(this, totalList))

Теперь возникает проблема, когда я снимаю одно изображение, оноработает отлично.Но когда я делаю снимок во второй раз, он отображает 3 изображения (1-е, 1-е и 2-е).Кажется, что totalList добавляется дважды.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

удалось решить проблему с дублированным списком.Вот как я решаю

Я создаю еще один список, используемый для удаления дублирующегося элемента в totalList

  var newList: MutableList<String>? = null

, затем пишу функцию removeDuplicates

listOfImagesPath?.clear()
listOfImagesPath = RetriveCapturedImagePath()
totalList?.addAll(listOfImagesPath!!)
newList = removeDuplicates(totalList!!);
grid.setAdapter(ImageListAdapter(this, newList))

А здесь функция removeDuplicates

fun <T> removeDuplicates(list: MutableList<T>): MutableList<T> {
        // Create a new ArrayList
        val newList = ArrayList<T>()

        // Traverse through the first list
        for (element in list) {

            // If this element is not present in newList
            // then add it
            if (!newList.contains(element)) {

                newList.add(element)
            }
        }

        // return the new list
        return newList
    }
0 голосов
/ 15 февраля 2019

Вы должны сначала инициализировать свой список следующим образом

var totalList MutableList<String> = mutableListOf()

, а затем просто добавить новое значение к нему, как правило

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