//2014-8-27 package com.konka.music.ui.fragment; import java.lang.reflect.Field; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.content.Loader; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import com.konka.music.R; import com.konka.music.loader.BigLabelInfoLoader; import com.konka.music.pojo.BigLabelInfo; import com.konka.music.ui.view.TabPageIndicator; import com.konka.music.util.ArrayUtils; import com.konka.music.util.Assist; import com.konka.music.util.CreateViewUtil; import com.konka.music.util.ViewUtility; import com.kubeiwu.baseclass.loader.BaseLoaderCallbacksFragment; /** * @author cgpllx1@qq.com (www.kubeiwu.com) * @date 2014-8-27 */ public class MusicLibraryFragment extends BaseLoaderCallbacksFragment<ArrayList<BigLabelInfo>> implements OnClickListener { public static final String TAG = MusicLibraryFragment.class.getName(); public static MusicLibraryFragment newInstance() { MusicLibraryFragment musicLibraryFragment = new MusicLibraryFragment(); return musicLibraryFragment; } private ViewHolder viewHolder; private View rootView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = CreateViewUtil.onCreateView(inflater, container, savedInstanceState, rootView, R.layout.net_simple_tabs); return rootView; } class ViewHolder { MusicAdapter adapter; TabPageIndicator indicator; ViewPager pager; View fail; Button btn_refresh; View emptyView; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); if (rootView.getTag() == null) { viewHolder = new ViewHolder(); viewHolder.adapter = new MusicAdapter(getChildFragmentManager()); viewHolder.pager = (ViewPager) view.findViewById(R.id.pager); viewHolder.pager.setOffscreenPageLimit(2); viewHolder.pager.setAdapter(viewHolder.adapter); viewHolder.indicator = (TabPageIndicator) view.findViewById(R.id.indicator); viewHolder.indicator.setViewPager(viewHolder.pager); viewHolder.fail = ViewUtility.findViewById(view, R.id.refresh_layout); viewHolder.btn_refresh = ViewUtility.findViewById(viewHolder.fail, R.id.btn_refresh, this); viewHolder.emptyView = ViewUtility.findViewById(view, R.id.empty_loading); rootView.setTag(viewHolder); } else { viewHolder = (ViewHolder) rootView.getTag(); } viewinitcomplete = true; lazyLoad(); System.out.println("MusicLibraryFragment--onViewCreated"+this); } private boolean viewinitcomplete = false; @Override protected void lazyLoad() { super.lazyLoad(); if (viewinitcomplete && isVisible) { getLoaderManager().initLoader(Assist.MUSICLIBRARY_LOADER_ID, null, this); } }; @Override public void onAttach(Activity activity) { super.onAttach(activity); getActivity().getActionBar().setTitle("乐库"); } @Override public Loader<ArrayList<BigLabelInfo>> onCreateLoader(int arg0, Bundle arg1) { viewHolder.fail.setVisibility(View.GONE); viewHolder.emptyView.setVisibility(View.VISIBLE); return new BigLabelInfoLoader(getActivity()); } @Override public void onLoadFinished(Loader<ArrayList<BigLabelInfo>> arg0, ArrayList<BigLabelInfo> bigLabelInfos) { super.onLoadFinished(arg0, bigLabelInfos); if (!ArrayUtils.isEmpty(bigLabelInfos) && viewHolder.adapter.getCount() == 0) { viewHolder.adapter.setBigLabelInfos(bigLabelInfos); viewHolder.indicator.notifyDataSetChanged(); } else { if (viewHolder.adapter.getCount() == 0) { viewHolder.fail.setVisibility(View.VISIBLE); } } viewHolder.emptyView.setVisibility(View.GONE); } class MusicAdapter extends FragmentPagerAdapter { ArrayList<BigLabelInfo> bigLabelInfos; public MusicAdapter(FragmentManager fm) { super(fm); bigLabelInfos = new ArrayList<BigLabelInfo>(); } public void setBigLabelInfos(ArrayList<BigLabelInfo> bigLabelInfos) { if (bigLabelInfos != null) { this.bigLabelInfos.addAll(bigLabelInfos); notifyDataSetChanged(); } } @Override public Fragment getItem(int position) { return BigLabelFragment.newInstance(bigLabelInfos.get(position).getId()); } @Override public CharSequence getPageTitle(int position) { return bigLabelInfos.get(position).getBigLabelName(); } @Override public int getCount() { return bigLabelInfos.size(); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_refresh: getLoaderManager().restartLoader(Assist.MUSICLIBRARY_LOADER_ID, null, this); break; } } }