package com.tadpolemusic.activity.fragment.menu;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.TextView;
import com.tadpolemusic.R;
import com.tadpolemusic.TMLog;
import com.tadpolemusic.activity.fragment.AbsMenuFragment;
import com.tadpolemusic.adapter.BaseListAdapter;
import com.tadpolemusic.adapter.MyMusicAdapter;
import com.tadpolemusic.adapter.MyMusicItem;
public class LeftMenuFragment extends AbsMenuFragment {
private static final String TAG = "LeftMenuFragment";
private ArrayList<MyMusicItem> mLocalItems;
private MyMusicAdapter mAdapterLocal;
private MyMusicAdapter mAdapterNetwork;
private MyMusicItem mCurMyMusicItem;
public void setLocalMusicItems(ArrayList<MyMusicItem> localMusicItems) {
mLocalItems = localMusicItems;
}
@Override
public void onSaveInstanceState(Bundle outState) {
TMLog.step(TAG, "onSaveInstanceState");
outState.putSerializable("mLocalItems", mLocalItems);
outState.putSerializable("mCurMyMusicItem", mCurMyMusicItem);
super.onSaveInstanceState(outState);
}
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
TMLog.step(TAG, "onViewStateRestored");
if (savedInstanceState != null) {
ArrayList<MyMusicItem> items = (ArrayList<MyMusicItem>) savedInstanceState.get("mLocalItems");
mLocalItems = items;
mAdapterLocal.setList(items);
mAdapterLocal.notifyDataSetChanged();
MyMusicItem item = (MyMusicItem) savedInstanceState.get("mCurMyMusicItem");
setDefaultSelectItem(item);
selectedDefaultItem();
}
super.onViewStateRestored(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
TMLog.step(TAG, "onCreateView");
View view = inflater.inflate(R.layout.sliding_menu_left, null);
initLocalMusic(view);
initNetworkMusic(view);
feedLocalItems(mLocalItems);
return view;
}
@Override
public void onDestroy() {
TMLog.step(TAG, "onDestroy");
super.onDestroy();
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TMLog.step(TAG, "onViewCreated");
selectedDefaultItem();
}
public void selectedDefaultItem() {
if (mCurMyMusicItem != null) {
int postion = mAdapterLocal.getList().indexOf(mCurMyMusicItem);
if (postion != BaseListAdapter.INVALID_POSITION) {
mAdapterLocal.setSelectedPostion(postion);
mAdapterLocal.notifyDataSetChanged();
}
postion = mAdapterNetwork.getList().indexOf(mCurMyMusicItem);
if (postion != BaseListAdapter.INVALID_POSITION) {
mAdapterNetwork.setSelectedPostion(postion);
mAdapterNetwork.notifyDataSetChanged();
}
getLeftMenuControll().setCenterContent(mCurMyMusicItem);
}
}
public void setDefaultSelectItem(MyMusicItem musicItem) {
mCurMyMusicItem = musicItem;
}
public ArrayList<MyMusicItem> loadNetworkItems() {
ArrayList<MyMusicItem> myMusicList = new ArrayList<MyMusicItem>();
MyMusicItem item = new MyMusicItem();
item.iconDefaultResId = R.drawable.ic_launcher;
item.text = "本地音乐";
myMusicList.add(item);
item = new MyMusicItem();
item.iconDefaultResId = R.drawable.ic_launcher;
item.text = "网络音乐";
myMusicList.add(item);
// 制造假数据
for (int i = 0, len = 1; i < len; i++) {
item = new MyMusicItem();
item.text = "text" + i;
item.iconDefaultResId = R.drawable.ic_launcher;
myMusicList.add(item);
}
return myMusicList;
}
private void feedLocalItems(ArrayList<MyMusicItem> myMusicList) {
mAdapterLocal.setList(myMusicList);
mAdapterLocal.notifyDataSetChanged();
}
/**
* local music
*/
public void initLocalMusic(View view) {
View viewMusic = view.findViewById(R.id.pane_local_music);
GridView gridViewMusic = (GridView) (viewMusic.findViewById(R.id.grid_view_my_music));
// section
TextView textViewSection = (TextView) viewMusic.findViewById(R.id.text_view_section);
textViewSection.setText(R.string.sliding_menu_left_local_music);
// gridview
mAdapterLocal = new MyMusicAdapter(getActivity());
gridViewMusic.setAdapter(mAdapterLocal);
final LeftMenuFragment me = this;
gridViewMusic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int postion, long arg3) {
ArrayList<MyMusicItem> musicList = (ArrayList<MyMusicItem>) mAdapterLocal.getList();
// item action
MyMusicItem item = musicList.get(postion);
if (MyMusicItem.Action.REPLEACE_CENTER.equals(item.action) && (item.centerContentClass != null)) {
getLeftMenuControll().setCenterContent(item);
getLeftMenuControll().scrollToCenter();
// update ui
mAdapterLocal.setSelectedPostion(postion);
mAdapterNetwork.setSelectedPostion(mAdapterNetwork.INVALID_POSITION);
}
if (MyMusicItem.Action.NEW_ACTIVITY.equals(item.action) && (item.activityClass != null)) {
Intent intent = new Intent(getActivity(), item.activityClass);
me.startActivity(intent);
}
}
});
}
/**
* network music
*/
public void initNetworkMusic(View view) {
View viewMusic = view.findViewById(R.id.pane_network_music);
// section
TextView textViewSection = (TextView) viewMusic.findViewById(R.id.text_view_section);
textViewSection.setText(R.string.sliding_menu_left_network_music);
// gridview
GridView gridViewMusic = (GridView) (viewMusic.findViewById(R.id.grid_view_my_music));
mAdapterNetwork = new MyMusicAdapter(getActivity());
final ArrayList<MyMusicItem> myMusicList = loadNetworkItems();
mAdapterNetwork.setList(myMusicList);
gridViewMusic.setAdapter(mAdapterNetwork);
gridViewMusic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int postion, long arg3) {
// update ui
mAdapterLocal.setSelectedPostion(mAdapterLocal.INVALID_POSITION);
mAdapterNetwork.setSelectedPostion(postion);
// item action
MyMusicItem item = myMusicList.get(postion);
getLeftMenuControll().scrollToCenter();
}
});
}
}