package com.airplayer.fragment;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.airplayer.R;
import com.airplayer.activity.AirMainActivity;
import com.airplayer.adapter.AirAdapter;
import com.airplayer.adapter.SongAdapter;
import com.airplayer.model.Song;
import com.airplayer.service.PlayMusicService;
import java.util.List;
/**
* Created by ZiyiTsang on 15/6/20.
*/
public class PlayListFragment extends Fragment {
private List<Song> mPlayList;
private RecyclerView mRecyclerView;
private SongAdapter mAdapter;
private PlayMusicService.PlayerControlBinder mBinder;
private ListItemScrollReceiver receiver;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
receiver = new ListItemScrollReceiver();
IntentFilter filter = new IntentFilter(PlayMusicService.PLAY_STATE_CHANGE);
getActivity().registerReceiver(receiver, filter);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_recycler, container, false);
mBinder = ((AirMainActivity) getActivity()).getPlayerControlBinder();
mPlayList = mBinder.getPlayList();
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mAdapter = new SongAdapter(getActivity(), mPlayList) {
@Override
public AirItemViewHolder onCreateItemViewHolder(ViewGroup parent) {
return new SongItemViewHolder(
getLayoutInflater().inflate(R.layout.recycler_item_play_list, parent, false));
}
@Override
public AirFootViewHolder onCreateFootViewHolder(ViewGroup parent) {
return new AirAdapter.AirFootViewHolder(getLayoutInflater()
.inflate(R.layout.recycler_item_play_list, parent, false));
}
};
mAdapter.setOnItemClickListener(new AirAdapter.OnItemClickListener() {
@Override
public void onItemClicked(View view, int position) {
mBinder.playMusic(position - 1, mPlayList);
mAdapter.notifyItemChanged(position);
}
});
mAdapter.showEQAnimation(true);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.scrollToPosition(mBinder.getPosition() + 1);
return rootView;
}
@Override
public void onDestroy() {
getActivity().unregisterReceiver(receiver);
super.onDestroy();
}
private class ListItemScrollReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int playState = intent.getIntExtra(PlayMusicService.PLAY_STATE_KEY, -1);
if (playState == PlayMusicService.PLAY_STATE_PLAY) {
mRecyclerView.scrollToPosition(mBinder.getPosition() - 1);
}
mAdapter.notifyDataSetChanged();
}
}
}