package com.example.ipcplayer.module; import com.example.ipcplayer.R; import com.example.ipcplayer.adapter.AllSongListAdapter; import com.example.ipcplayer.controller.LocalMusicController; import com.example.ipcplayer.eventbus.MusicEvent; import com.example.ipcplayer.manager.LocalMusicManager; import com.example.ipcplayer.provider.MusicDB; import com.example.ipcplayer.utils.LogUtil; import de.greenrobot.event.EventBus; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.support.v4.content.CursorLoader; import android.support.v4.widget.CursorAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; public class SampleFragment extends ListViewBaseFragment{ private Cursor mCursor; private static int ALLSONG = 1; CursorAdapter mAdapter; @Override public void onAttach(Activity activity) { super.onAttach(activity); mFactory = new SongListViewFactory();//初始化 要实现的工厂 LogUtil.d("init factory "); EventBus.getDefault().register(this); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); // View view = inflater.inflate(R.layout.list_sample, null); // mListView = (ListView) view.findViewById(R.id.list); LogUtil.d("onCreateView"); return mContentView; } @Override public void onResume() { super.onResume(); } @Override public void onDestroy() { super.onDestroy(); } @Override public void onDestroyView() { super.onDestroyView(); } public void onEvent(MusicEvent event){ long id = event.getId(); LogUtil.d("get Event to play music"); LocalMusicController.getInstance(mContext).playMusic(id,null); } public class SongListViewFactory extends ListViewAbstractFactory{ @Override public int getTitle() { return 0; } @Override public String getFooterText(int count) { return null; } @Override public void customView() { } @Override public CursorAdapter createAdapter() { LogUtil.d("createAdapter"); mAdapter = new AllSongListAdapter(mContext,null,R.layout.all_song_list_item); return mAdapter; } @Override public int getLoaderCallbackId() { return ALLSONG; } @Override public AbstractLoaderCallback createLoaderCallback() { return new SongLoaderCallback(); } } public class SongLoaderCallback extends AbstractLoaderCallback{ @Override public CursorLoader createCursorLoader() { String where = MusicDB.MusicInfoColumns._ID + "> 0 "; LogUtil.d(" where = " + where); String[] projection = new String[] { MusicDB.MusicInfoColumns._ID, MusicDB.MusicInfoColumns.MUSICNAME, MusicDB.MusicInfoColumns.ARTIST }; CursorLoader cursorLoader = new CursorLoader(mContext, MusicDB.MusicInfoColumns.getContentUri(), projection, where, null, null); LogUtil.d("get cursorLoader "); return cursorLoader; } @Override public void onDataChanged(Cursor cursor) { if(mAdapter != null){ mAdapter.swapCursor(cursor); LogUtil.d("data changed and set cursor"); }else{ LogUtil.d("mAdapter is null "); } } @Override public void onNoData() { if(mAdapter != null){ mAdapter.swapCursor(null); } } @Override public void onDataReset() { } } }