/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.fragments; import android.content.Context; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.ProgressBar; import com.galaxy.meetup.client.android.EsCursorAdapter; import com.galaxy.meetup.client.android.EsCursorLoader; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.content.EsEventData; import com.galaxy.meetup.client.android.ui.view.EsImageView; import com.galaxy.meetup.client.android.ui.view.EventThemeView; /** * * @author sihai * */ public class EventThemeListFragment extends EsListFragment implements LoaderCallbacks, OnItemClickListener, Refreshable { private static final String EVENT_THEME_COLUMNS[] = { "_id", "theme_id", "image_url", "placeholder_path" }; private boolean mDataLoaded; private int mFilter; private OnThemeSelectedListener mListener; private ProgressBar mProgressBarView; public EventThemeListFragment() { } public EventThemeListFragment(int i) { mFilter = i; } private void updateProgressBarVisibility() { if(mProgressBarView != null) { ProgressBar progressbar = mProgressBarView; byte byte0; if(mDataLoaded) byte0 = 8; else byte0 = 0; progressbar.setVisibility(byte0); } } public final void onCreate(Bundle bundle) { super.onCreate(bundle); if(bundle != null) mFilter = bundle.getInt("filter"); getLoaderManager().initLoader(0, null, this); } public final Loader onCreateLoader(int i, Bundle bundle) { Loader loader = null; final FragmentActivity context = getActivity(); final EsAccount esaccount = (EsAccount)getActivity().getIntent().getExtras().get("account"); if(0 == i) { loader = new EsCursorLoader(context) { public final Cursor esLoadInBackground() { return EsEventData.getEventThemes(context, esaccount, mFilter, EventThemeListFragment.EVENT_THEME_COLUMNS); } }; } return loader; } public final View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle) { View view = super.onCreateView(layoutinflater, viewgroup, bundle, R.layout.event_theme_list_fragment); mAdapter = new EventThemeListAdapter(getActivity(), null); ((ListView)mListView).setAdapter(mAdapter); ((ListView)mListView).setOnItemClickListener(this); ((ListView)mListView).setRecyclerListener(new android.widget.AbsListView.RecyclerListener() { public final void onMovedToScrapHeap(View view1) { ((EventThemeView)view1.findViewById(R.id.image)).onRecycle(); } }); setupEmptyView(view, R.string.event_theme_list_empty); return view; } public final View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle, int i) { return super.onCreateView(layoutinflater, viewgroup, bundle, i); } public final void onDestroyView() { super.onDestroyView(); } public void onItemClick(AdapterView adapterview, View view, int i, long l) { Cursor cursor = (Cursor)mAdapter.getItem(i); int j = cursor.getInt(1); String s = cursor.getString(2); if(mListener != null) mListener.onThemeSelected(j, s); } public final void onLoadFinished(Loader loader, Object obj) { Cursor cursor = (Cursor)obj; mDataLoaded = true; mAdapter.swapCursor(cursor); View view = getView(); if(view != null) { if(mDataLoaded) showContent(view); else showEmptyViewProgress(view, getString(R.string.loading)); updateProgressBarVisibility(); } } public final void onLoaderReset(Loader loader) { } public final void onPause() { super.onPause(); } public final void onResume() { super.onResume(); } public final void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); bundle.putInt("filter", mFilter); } public void onScroll(AbsListView abslistview, int i, int j, int k) { super.onScroll(abslistview, i, j, k); } public void onScrollStateChanged(AbsListView abslistview, int i) { super.onScrollStateChanged(abslistview, i); } public final void setOnThemeSelectedListener(OnThemeSelectedListener onthemeselectedlistener) { mListener = onthemeselectedlistener; } public final void setProgressBar(ProgressBar progressbar) { mProgressBarView = progressbar; updateProgressBarVisibility(); } //================================================================================================================== // Inner class //================================================================================================================== final class EventThemeListAdapter extends EsCursorAdapter { public final void bindView(View view, Context context, Cursor cursor) { ProgressBar progressbar = (ProgressBar)view.findViewById(R.id.progress_bar); progressbar.setVisibility(0); EventThemeView eventthemeview = (EventThemeView)view.findViewById(R.id.image); eventthemeview.setOnImageLoadedListener((EsImageView.OnImageLoadedListener)view.getTag()); String s = cursor.getString(2); String s1 = cursor.getString(3); if(!TextUtils.isEmpty(s1)) { android.net.Uri.Builder builder = new android.net.Uri.Builder(); builder.path(s1); eventthemeview.setDefaultImageUri(builder.build()); progressbar.setVisibility(8); } eventthemeview.setImageUrl(s); } public final View newView(Context context, Cursor cursor, ViewGroup viewgroup) { View view = LayoutInflater.from(context).inflate(R.layout.event_theme_list_item, viewgroup, false); final ProgressBar progressBar = ((ProgressBar)view.findViewById(R.id.progress_bar)); view.setTag(new EsImageView.OnImageLoadedListener() { public final void onImageLoaded() { progressBar.setVisibility(8); } }); return view; } public EventThemeListAdapter(Context context, Cursor cursor) { super(context, null); } } public static interface OnThemeSelectedListener { public abstract void onThemeSelected(int i, String s); } }