Я пытаюсь создать музыкальный плеер. У меня есть класс под названием MusicData, который предоставляет данные плейлиста и другой класс для фрагмента списка воспроизведения, так как я использую viewpager. Фрагмент списка воспроизведения загружает данные с помощью настраиваемого класса expandableListAdapter.Данные изменились, но notifyDataSetChanged не работает
Теперь проблема в этом. Когда пользователь нажимает на песню, она должна быть добавлена в недавно воспроизведенный список воспроизведения, и это должно отразиться в фрагменте списка воспроизведения. Основные данные меняются с тех пор, как я нажимаю на первую песню из плейлиста, она воспроизводит то же самое, но вид, который содержит название песни, не изменяется.
Поэтому проблема состоит в том, что взгляды не отражают основные данные. Я попытался поместить метод notifyDataSetChanged в класс фрагмента списка воспроизведения, но он не работает. что делать?
Вот код класса фрагмента списка воспроизведения
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.playlist, container, false);
expandableListView = (ExpandableListView)v.findViewById(R.id.expandableListViewPlaylist);
Log.e(TAG,"1");
expandableListTitle = new ArrayList<>(MusicData.getExpandableListDetailPlayList().keySet());
expandableListAdapter = new CustomExpandableListAdapter(this.getContext(), expandableListTitle, MusicData.getExpandableListDetailPlayList());
expandableListView.setAdapter(expandableListAdapter);
expandableListAdapter.notifyDataSetChanged();
.......
И это код класса MusicData
public static LinkedHashMap<String, ArrayList<Song>> getExpandableListDetailPlayList(){return expandableListDetailPlayList;}
И это адаптер
public class CustomExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private ArrayList<String> expandableListTitle;
private LinkedHashMap<String, ArrayList<Song>> expandableListDetail;
private String TAG = "AdapterClass";
public CustomExpandableListAdapter(Context context, ArrayList<String> expandableListTitle,
LinkedHashMap<String, ArrayList<Song>> expandableListDetail) {
this.context = context;
this.expandableListTitle = expandableListTitle;
this.expandableListDetail = expandableListDetail;
}
@Override
public Object getChild(int listPosition, int expandedListPosition) {
return this.expandableListDetail.get(this.expandableListTitle.get(listPosition))
.get(expandedListPosition);
}
@Override
public long getChildId(int listPosition, int expandedListPosition) {
return expandedListPosition;
}
......
Данные для воспроизведения изменяется в классе MainActivity. Итак, как и где я могу вызвать метод notifyDataSetChanged()?
Пожалуйста, поделитесь частью кода, который обрабатывает щелчок пользователя и добавляет эту песню в список соответственно –
, где я могу вызвать метод notifyDataSetChanged()? после того как ваши данные изменились –