在MusicUtil中添加一个SearchSong的方法
public List<Song> SearchSong(String name) {
List<Song> list2 = new ArrayList<>();
for (Song song : list) {
if (song.getSong().toString().contains(name) || song.getSinger().toString().contains(name)) {
list2.add(song);
}
}
return list2;
}
因为我们已经在List中保存了我们的歌曲数据
所以我们只要一个个遍历 找到歌曲或者歌手名符合我们传入的String就可以啦
然后符合的就添加到list2中
最后将其返回
除此之外我们还要在MusicAdapter中添加一个setList方法 去改变适配器中的List
当然记得通知其数据集合已经变化
一定要调用notifyDataSetChanged();这个方法!!否则我们在界面中时看不出的
public void setList (List<Song> list){
this.list = list;
notifyDataSetChanged();
}
去给EditText设置监听
在文本改变后我们让适配器中的数据集合变成我们的List2就可以了
etFindlocal.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
musicAdapter.setList(MusicUtil.getInstance().SearchSong(etFindlocal.getText().toString()));
}
});