package com.konka.music.ui.fragment.abstractfragment; import java.util.ArrayList; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ListView; import com.konka.music.adapter.ArrayAdapter; import com.konka.music.pojo.MusicInfo; import com.konka.music.service.MusicInfoManager; import com.konka.music.util.ArrayUtils; import com.konka.music.util.ObjectUtil; import com.konka.music.util.Util; import com.konka.music.util.ViewTag; public abstract class KBaseListFragment_MusicInfoArray extends KBaseListFragment_T<ArrayList<MusicInfo>> { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return super.onCreateView(inflater, container, savedInstanceState); } public static class KBaseHolder { public ArrayAdapter<MusicInfo> listViewAdapter = null; public ListView kBaseListView; } protected abstract KBaseHolder getKBaseHolder(); @Override public void onClick(View v) { super.onClick(v); Object tagobj = v.getTag(); if (tagobj != null && tagobj instanceof String) { switch ((String) tagobj) { case ViewTag.PLAYALL: ArrayList<MusicInfo> lists = getMusicInfoArray(); if (!ArrayUtils.isEmpty(lists)) { MusicInfoManager.addMusicInfoArray(getActivity(), lists, true); } break; default: super.onClick(v); break; } } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { try { ArrayList<MusicInfo> musicInfos = getMusicInfoArray(); if (!ArrayUtils.isEmpty(musicInfos)) { MusicInfo musicInfo=musicInfos.get(position - getHeardercCount()); startAnimationToPlayMusic(view, musicInfo); } } catch (Exception e) { e.printStackTrace(); } } protected int getHeardercCount() { KBaseHolder baseHolder = getKBaseHolder(); if (!ObjectUtil.isEmpty(baseHolder, baseHolder.kBaseListView)) { return baseHolder.kBaseListView.getHeaderViewsCount(); } return 0; } protected ArrayList<MusicInfo> getMusicInfoArray() { KBaseHolder baseHolder = getKBaseHolder(); if (!ObjectUtil.isEmpty(baseHolder, baseHolder.listViewAdapter)) { ArrayList<MusicInfo> lists = baseHolder.listViewAdapter.getAll(); return lists; } return null; } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); final AdapterContextMenuInfo mInfo = (AdapterContextMenuInfo) menuInfo; int index = mInfo.position - getHeardercCount(); KBaseHolder baseHolder = getKBaseHolder(); if (index >= 0 && index < baseHolder.listViewAdapter.getCount()) { menu.setHeaderTitle(baseHolder.listViewAdapter.getItem(index).getTitle()); menu.add(0, CONTEXT_MENU_ADD_TO_PLAYLIST, Menu.NONE, "添加到播放列表"); menu.add(0, CONTEXT_MENU_PLAT, Menu.NONE, "播放"); } } protected final int CONTEXT_MENU_ADD_TO_PLAYLIST = 1;// 添加到播放列表 protected final int CONTEXT_MENU_CHECK_DETAIL = 2;// 查看详情 protected final int CONTEXT_MENU_PLAT = 3;// 播放当前music protected final int CONTEXT_MENU_DELETE = 4;// 删除当前 protected final int CONTEXT_MENU_DOWNLOAD = 5;// 下载当前 @Override public boolean onContextItemSelected(MenuItem item) { final AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); KBaseHolder baseHolder = getKBaseHolder(); if (baseHolder.listViewAdapter == null) { return false; } int index = menuInfo.position - getHeardercCount(); if (!(index >= 0 && index < baseHolder.listViewAdapter.getCount())) { return false; } MusicInfo musicInfo = baseHolder.listViewAdapter.getItem(index); if (musicInfo == null) { return false; } switch (item.getItemId()) { case CONTEXT_MENU_ADD_TO_PLAYLIST: // 添加到列表 MusicInfoManager.addMusic2PlayList(getActivity(), musicInfo, false); break; case CONTEXT_MENU_CHECK_DETAIL:// 查看详情 break; case CONTEXT_MENU_PLAT:// 播放 MusicInfoManager.addMusic2PlayList(getActivity(), musicInfo, true); break; case CONTEXT_MENU_DELETE:// 删除 break; case CONTEXT_MENU_DOWNLOAD:// 下载 Util.downLoadMusic(getActivity(), musicInfo); break; default: return false; } return true; } }