Мое приложение использует список файлов мультимедиа на телефоне, т. Е. Изображения, аудио и видео. Это также позволяет пользователю фильтровать список с помощью некоторых флажков в меню, чтобы пользователь мог выбрать, отображать или скрывать каждый тип файлов.
Я сделал это, поместив это в getView () адаптера:
// don't show unwanted file types
if (cmo.hasType(MediaType.AUDIO_FILE)){
if(!prefs.getBoolean(PREFS_SHOWAUDIO, true)){
return new ViewStub(mContext);;
}
}else if(cmo.hasType(MediaType.IMAGE_FILE)){
if(!prefs.getBoolean(PREFS_SHOWIMG, true)){
return new ViewStub(mContext);;
}
}else if( cmo.hasType(MediaType.VIDEO_FILE)){
if(!prefs.getBoolean(PREFS_SHOWVIDEO, true)){
return new ViewStub(mContext);;
}
}
, что довольно эффективно в том смысле, что список не показывает эти элементы. Однако ListView по-прежнему отображает серую линию размером 1px между каждым View, даже если они являются ViewStubs, то есть я вижу толстую серую линию всякий раз, когда отфильтровывается группа последовательных элементов.
Как мне избавиться от этих строк? Должен ли я создать новый массив данных, содержащий только те элементы, которые должны отображать представление?