我不知道为什么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
被添加了两次。
答案 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
}