在Android中添加两个MutableList

时间:2019-02-15 03:21:05

标签: java android list kotlin

我不知道为什么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张图像(第一,第一和第二)。似乎totalList被添加了两次。

2 个答案:

答案 0 :(得分:1)

您必须首先像这样初始化列表

keyword =   {
  "navbar": '''

.navbar {  
margin: 0 auto;
border-bottom: 1px solid rgba(0,0,0,0.1);
}
.navbar nav ul {
padding: 0;
margin: 0;
list-style: none;
position: relative;
}''',

  "burger":'''

.burger input + label { 
position: fixed;
top: 20px;
right: 40px;
height: 20px;
width: 15px;
z-index: 5;
}''',

#etc...

}

然后正常添加新值

var totalList MutableList<String> = mutableListOf()

答案 1 :(得分:1)

能够解决重复的列表项问题。 这就是我的解决方法

我创建了另一个列表,用于删除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
    }