0
我的应用程序使用手机上的媒体文件列表,即图像,音频和视频。它还允许用户通过菜单中的某些复选框过滤列表,以便用户可以选择显示或隐藏每种类型的文件。Android,适配器:通过getView()过滤仍然留下灰线
我一直在这样做的方式是把这个在适配器的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仍然会在每个View之间呈现1px灰线,即使它们是ViewStub,也就是说,只要过滤掉一组连续项目,就会看到粗灰线。
我该如何摆脱这些线?我应该创建一个新的数据数组,只包含应显示视图的元素吗?
这很有道理。我被适配器中有两个数据数组的想法拖延了(其中一个包含所有数据,其中一个仅包含我想展示的数据) - 但是我想没有理由将所有数据都包含在内 - 这是本质上是一个缓存,在适配器中。缓存和过滤器逻辑应该在外面,并且适配器应该直接显示其预先过滤的内容。 – juell 2010-09-23 12:13:29