package com.tadpolemusic.activity.fragment.center; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import com.itap.voiceemoticon.widget.IndexBar; import com.tadpolemusic.R; import com.tadpolemusic.VEApplication; import com.tadpolemusic.activity.fragment.AbsCenterContent; import com.tadpolemusic.adapter.LocalMusicAdapter; import com.tadpolemusic.media.LocalMusicItem; import com.tadpolemusic.media.MediaQueryHelper; import com.tadpolemusic.media.MusicData; import com.tadpolemusic.media.PlayAsyncTask; /** * <br>========================== * <br> author:Zenip * <br> email:lxyczh@gmail.com * <br> create:2013-1-31 * <br>========================== */ public class LocalMusicFragment extends AbsCenterContent { private static final int HANDLER_FILL_LIST = 1; private ListView mListView; private IndexBar mIndexBar; private LocalMusicAdapter mAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_local_music, null); mListView = (ListView) view.findViewById(R.id.list_view_local_music); mIndexBar = (IndexBar) view.findViewById(R.id.index_bar_local_music); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { Log.d(VEApplication.TAG, "HotVoice Fragment onItemClick "); new PlayAsyncTask(getActivity(), mAdapter.getList(), "local_music").execute(pos); } }); mAdapter = new LocalMusicAdapter(getActivity()); mAdapter.setListView(mListView); mListView.setOnScrollListener(mAdapter); mListView.setAdapter(mAdapter); mIndexBar.setListView(mListView); mAdapter.setOnSectionChangeListener(new LocalMusicAdapter.OnSectionChangeListener() { @Override public void handle(char letter) { mIndexBar.setCurrentSection(letter); } }); loadData(); return view; } @Override public void onDestroy() { Log.d(VEApplication.TAG, "---------Destroy-----------"); super.onDestroy(); } /** * comparator that use the first letter ofr Chinese pinyin */ private Comparator<MusicData> mCommparator = new Comparator<MusicData>() { @Override public int compare(MusicData lhs, MusicData rhs) { if (lhs.getFirstLetterInUpcase().equals("?")) { return 1; } if (rhs.getFirstLetterInUpcase().equals("?")) { return -1; } return lhs.getFirstLetterInUpcase().compareTo(rhs.getFirstLetterInUpcase()); } }; private Handler mHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what) { case HANDLER_FILL_LIST: ArrayList<MusicData> list = (ArrayList<MusicData>) msg.obj; if (list != null) { mAdapter.setList(list); mAdapter.notifyDataSetChanged(); } break; default: break; } return false; } }); private void loadData() { final LocalMusicFragment me = this; new Thread(new Runnable() { @Override public void run() { Message message = Message.obtain(); message.what = HANDLER_FILL_LIST; MediaQueryHelper helper = new MediaQueryHelper(me.getActivity()); ArrayList<MusicData> list = helper.getLocalMusicDatas(); // sort Collections.sort(list, mCommparator); // put int musicplay VEApplication.getMusicPlayer(me.getActivity()).refreshMusicList("localmusic", list); System.out.println("list size = " + list.size()); message.obj = list; mHandler.sendMessage(message); } }).start(); } @Override public String geTitle() { return "本地音乐"; } @Override public String getUniqueId() { return getClass().getName(); } @Override public void onMusicPlayingIndexChange(int index) { mAdapter.setSelectedPostion(index); mAdapter.notifyDataSetChanged(); } }