package com.konka.music.ui.fragment; import java.util.List; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import com.konka.music.R; import com.konka.music.adapter.PlayerQueueListAdapter; import com.konka.music.adapter.PlayerQueueListAdapter.SetIcon; import com.konka.music.pojo.MusicInfo; import com.konka.music.service.MusicInfoManager; import com.konka.music.service.WeakHandler; import com.konka.music.ui.fragment.abstractfragment.AbstractKBaseFragment; import com.konka.music.util.ObjectUtil; import com.kubeiwu.baseclass.util.KLog; public class PlayerQueueListFragment extends AbstractKBaseFragment implements OnClickListener, SetIcon { private List<MusicInfo> mMusicInfos; private PlayerQueueListAdapter mAdapter; private View mContainer; private View mViewLine; private RelativeLayout mViewLayout; // 背景 private ImageView mViewEmpty; // 空白 private ImageButton mViewClean; // 清空 private TextView mViewTitle; // 名称 private ListView mViewList; // 数据列 private static final int MSG_SHOW_EMPTY = 1; private static final int MSG_HIDE_EMPTY = 2; private Handler mHandler = new MyHandler(this); static class MyHandler extends WeakHandler<PlayerQueueListFragment> { public MyHandler(PlayerQueueListFragment owner) { super(owner); } @Override public void handleMessage(Message msg) { PlayerQueueListFragment fragment=getOwner(); if(!ObjectUtil.isEmpty(fragment)){ switch (msg.what) { case MSG_SHOW_EMPTY: fragment.showEmpty(); break; case MSG_HIDE_EMPTY: fragment.hideEmpty(); break; } } } }; private OnItemClickListener mItemClickListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 播放选中音乐 MusicInfoManager.playPositionInTheList(getActivity(), position); notifyDataSetChanged(); removeSelf(); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (mContainer == null) { mContainer = inflater.inflate(R.layout.player_queue_list, container, false); } else { container.removeView(mContainer); } return mContainer; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initView(); setMusicInfo(); initListener(); } @Override public void onDestroy() { super.onDestroy(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.player_queue_cancel_layer: removeSelf(); break; case R.id.player_queue_clean: removeSelf(); cleanAllDialog(); break; default: break; } } private void cleanAllDialog() { AlertDialog dialog = new AlertDialog.Builder(getActivity()).setTitle("清空队列").setMessage("确定要清空播放队列?").setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { PlayerQueueListFragment.this.cleanAll(((Dialog) dialog).getContext()); dialog.dismiss(); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create(); dialog.show(); dialog.getContext(); } /** * getActivity 中也要清除 * */ private void cleanAll(Context c) { // 此处应清除 getActivity中的 ArrayList MusicInfoManager.clearPalyList(c); mHandler.sendEmptyMessage(MSG_SHOW_EMPTY); } private void initView() { mViewLayout = (RelativeLayout) mContainer.findViewById(R.id.player_queue_cancel_layer); mViewEmpty = (ImageView) mContainer.findViewById(R.id.player_queue_empty); mViewClean = (ImageButton) mContainer.findViewById(R.id.player_queue_clean); mViewTitle = (TextView) mContainer.findViewById(R.id.player_queue_title); mViewList = (ListView) mContainer.findViewById(android.R.id.list); mViewLine = mContainer.findViewById(R.id.player_queue_line); } private void initListener() { if (mMusicInfos == null || mMusicInfos.size() == 0) { mHandler.sendEmptyMessage(MSG_SHOW_EMPTY); mViewLayout.setOnClickListener(this); } else { mHandler.sendEmptyMessage(MSG_HIDE_EMPTY); mViewLayout.setOnClickListener(this); mViewClean.setOnClickListener(this); mViewList.setAdapter(mAdapter); mViewList.setOnItemClickListener(mItemClickListener); notifyDataSetChanged(); } } public void hideEmpty() { this.mViewEmpty.setVisibility(View.GONE); this.mViewClean.setVisibility(View.VISIBLE); this.mViewList.setVisibility(View.VISIBLE); this.mViewTitle.setVisibility(View.VISIBLE); this.mViewLine.setVisibility(View.VISIBLE); mViewTitle.setText("播放队列(" + mMusicInfos.size() + ")"); } public void notifyDataSetChanged () { this.mAdapter.notifyDataSetChanged(); } public void removeSelf() { getActivity().getSupportFragmentManager().popBackStack(); } @Override public View getView(int position, View convertView) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(getActivity()).inflate(R.layout.player_queue_list_item, null); holder = new ViewHolder(); holder.index = (TextView) convertView.findViewById(R.id.index); holder.icon = (ImageView) convertView.findViewById(R.id.icon); holder.name = (TextView) convertView.findViewById(R.id.name); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (mMusicInfos != null && mMusicInfos.size() > position) { holder.index.setText("" + (position + 1)); holder.name.setText(mMusicInfos.get(position).getDisplayName()); if (getPlayListIndex() == position) { holder.icon.setImageResource(R.drawable.icon); holder.name.setTextColor(getActivity().getResources().getColor(R.color.common_blue)); } else { holder.icon.setImageBitmap(null); holder.name.setTextColor(getActivity().getResources().getColor(R.color.white)); } } else { KLog.e("wangxu", "setImage->null"); } return convertView; } public void showEmpty() { this.mViewClean.setVisibility(View.GONE); this.mViewList.setVisibility(View.GONE); this.mViewTitle.setVisibility(View.GONE); this.mViewLine.setVisibility(View.GONE); this.mViewEmpty.setVisibility(View.VISIBLE); } public void setMusicInfo() { this.mMusicInfos = getPlaylist(); mAdapter = new PlayerQueueListAdapter(); mAdapter.setMusicInfos(mMusicInfos); mAdapter.setIconInterface(this); } // public void setAdatper() { // this.mViewList.setAdapter(mAdapter); // } class ViewHolder { TextView index; TextView name; ImageView icon; } }