package com.kitty.poclient.fragment.mymusic; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; 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.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; import com.kitty.poclient.R; import com.kitty.poclient.adapter.ThemeListAdapter; import com.kitty.poclient.bean.LocalThemes; import com.kitty.poclient.common.BroadcastManager; import com.kitty.poclient.common.UpnpApp; import com.kitty.poclient.common.WatchDog; import com.kitty.poclient.data.VirtualData; import com.kitty.poclient.domain.Pack; import com.kitty.poclient.fragment.TabMusicFragment; import com.kitty.poclient.service.impl.PackServiceImpl; public class MymusicThemesFragment extends BaseFragment { private final String TAG = MymusicThemesFragment.class.getSimpleName(); private LinearLayout llLvThemes; private TextView tvNoData; private ListView lvThemes; private ListAdapter adapter; private View view; // private Themes themes; private Activity attachedActivity; private TabMusicFragment tabMusicFragment; public MymusicThemesFragment(Activity parentActivity, TabMusicFragment fragment) { this.attachedActivity = parentActivity; this.tabMusicFragment = fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = LayoutInflater.from(UpnpApp.context).inflate(R.layout.mymusic_themes_fragment, null);// 空指针 initComponents(); initArguments(); initListeners(); registerReceivers(); return view; } public String getFragmentName(){ return TAG; } private BroadcastReceiver updateListReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { boolean refreshThemeList = intent.getBooleanExtra(BroadcastManager.EXTRA_INCLUDE_LOCALTHEME, BroadcastManager.EXTRA_BOOLEAN_DEFAULT); if (refreshThemeList) { if(adapter != null){ ((BaseAdapter) adapter).notifyDataSetChanged(); } } } }; private BroadcastReceiver onCacheStateMapEstablishedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.e("BUG580", TAG+ "onCacheStateMapEstablishedReceiver onReceive():WatchDog.cacheStateMap.size()="+WatchDog.cacheStateMap.size()); // 初始化 缓存状态 if(VirtualData.packs!=null && VirtualData.packs.size()>0){ VirtualData.localThemes = LocalThemes.translatePacks(VirtualData.packs); if (adapter != null) { ((BaseAdapter) adapter).notifyDataSetChanged(); Log.i(TAG, "Refresh theme cache state according all music cache state"); } } } }; private void initArguments() { if (VirtualData.packs == null || VirtualData.packs.size() == 0 || VirtualData.albums == null || VirtualData.albums.size() == 0 || VirtualData.localThemes == null || VirtualData.localThemes.size() == 0) { // 显示暂无数据 llLvThemes.setVisibility(View.GONE); tvNoData.setVisibility(View.VISIBLE); } else { llLvThemes.setVisibility(View.VISIBLE); tvNoData.setVisibility(View.GONE); adapter = new ThemeListAdapter(attachedActivity, lvThemes, VirtualData.localThemes); lvThemes.setAdapter(adapter); } } private void initComponents() { llLvThemes = (LinearLayout) view.findViewById(R.id.ll_lv_themes); tvNoData = (TextView) view.findViewById(R.id.tv_no_data); lvThemes = (ListView) view.findViewById(R.id.lv_themes); // adapter = new ThemeListAdapter(attachedActivity, lvThemes, VirtualData.localThemes); // lvThemes.setAdapter(adapter); } private void initListeners() { lvThemes.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) { // Pack pack = (Pack) lvThemes.getItemAtPosition(position); Pack pack = VirtualData.packs.get(position); pack = new PackServiceImpl().getPackDetailById(pack); MymusicThemeDetailFragment themeDetail = new MymusicThemeDetailFragment(attachedActivity, pack); tabMusicFragment.showThemeDetailFragment(themeDetail); } }); } @Override public void onResume() { registerReceivers(); super.onResume(); } @Override public void onDetach() { unregisterReceivers(); super.onDetach(); } private void unregisterReceivers() { attachedActivity.unregisterReceiver(updateListReceiver); attachedActivity.unregisterReceiver(onCacheStateMapEstablishedReceiver); } private void registerReceivers() { attachedActivity.registerReceiver(updateListReceiver, new IntentFilter(BroadcastManager.FILTER_UPDATE_LOCALLIST)); attachedActivity.registerReceiver(onCacheStateMapEstablishedReceiver, new IntentFilter("onCacheStateMapEstablishedReceiver")); } }