项目时间:202003
项目界面:
项目特点:
1.资源利用DataManager类进行管理,文件存储在本地SD卡内
2.电影年份范围采用的是'com.appyvet:materialrangebar:1.4.8'提供的双向SeekBar进行操作,头部或尾部的点击点结束拖动后会改变各自EditText的内容
3.点击查找时才获取界面信息,减少执行资料浪费
4.查找字幕类型时使用了异或计算 当选中的字幕类型与检查的电影的字幕类型不同时异或计算为1,此时不添加此电影到查询结果列表
private void search() {
if(searchInfo==null){
searchInfo = new SearchInfo();
}
if(filmResultList==null){
filmResultList = new ArrayList<Film>();
}
filmResultList.clear();
resultIndex = 0;
updateSearchInfo();
for(Film film:filmList){
//查询导演名称
if((!searchInfo.director.equals(film.getDirector()))&&!searchInfo.director.equals(""))
continue;
//查询影片名称
if((!searchInfo.name.equals(film.getName()))&&(!searchInfo.name.equals("")))
continue;
//查询年份
if(!(film.getYear()>=searchInfo.yearStart&&film.getYear()<= searchInfo.yearEnd))
continue;
//查询字幕
if(searchInfo.hasSubtitle!=0){
if((film.isSubtitle()^(searchInfo.hasSubtitle==1)))//相同为0,不同为1,
continue;
}
//查询类型,规则为选择多项条件更广,如果一个都没选则全部添加
if((!searchInfo.isTypeScience)&&(!searchInfo.isTypeSuspense)&&(!searchInfo.isTypeLove)&&(!searchInfo.isTypeBiography)&&(!searchInfo.isTypeComedy)){
filmResultList.add(film);
continue;
}
for(String type :film.getTypes().split("-")){
if(searchInfo.isTypeComedy&&type.equals("喜剧")
||searchInfo.isTypeLove&&type.equals("爱情")
||searchInfo.isTypeSuspense&&type.equals("悬疑")
||searchInfo.isTypeBiography&&type.equals("传记")
||searchInfo.isTypeScience&&type.equals("科幻")){
filmResultList.add(film);
break;
}
}
}
mTvResultNum.setText("符合条件的结果有"+String.valueOf(filmResultList.size())+"个");
}
仓库地址:
Ci90t0/FilmSearchApplication