package net.oschina.gitapp.ui.fragments; import java.util.List; import android.os.Bundle; import android.widget.BaseAdapter; import net.oschina.gitapp.AppException; import net.oschina.gitapp.R; import net.oschina.gitapp.adapter.ExploreListProjectAdapter; import net.oschina.gitapp.bean.CommonList; import net.oschina.gitapp.bean.Project; import net.oschina.gitapp.bean.MessageData; import net.oschina.gitapp.common.UIHelper; import net.oschina.gitapp.ui.basefragment.BaseSwipeRefreshFragment; /** * 发现页面推荐项目列表Fragment * @created 2014-05-19 上午10:43 * @author 火蚁(http://my.oschina.net/LittleDY) * * 最后更新 * 更新者 */ public class ExploreListProjectFragment extends BaseSwipeRefreshFragment<Project, CommonList<Project>> { public final static String EXPLORE_TYPE = "explore_type"; public final static byte TYPE_FEATURED = 0x0; public final static byte TYPE_POPULAR = 0x1; public final static byte TYPE_LATEST = 0x2; private byte type = 0; /** * 获取ExploreListProjectFragment 实例。 * @param type * @return */ public static ExploreListProjectFragment newInstance(byte type) { ExploreListProjectFragment exploreFeaturedListProjectFragment = new ExploreListProjectFragment(); Bundle bundle = new Bundle(); bundle.putByte(EXPLORE_TYPE, type); exploreFeaturedListProjectFragment.setArguments(bundle); return exploreFeaturedListProjectFragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle args = getArguments(); type = args.getByte(EXPLORE_TYPE); } @Override public BaseAdapter getAdapter(List<Project> list) { return new ExploreListProjectAdapter(getActivity(), list, R.layout.exploreproject_listitem); } @Override public MessageData<CommonList<Project>> asyncLoadList(int page, boolean refresh) { MessageData<CommonList<Project>> msg = null; try { CommonList<Project> list = getList(type, page, refresh); msg = new MessageData<CommonList<Project>>(list); } catch (AppException e) { e.makeToast(mApplication); e.printStackTrace(); msg = new MessageData<CommonList<Project>>(e); } return msg; } private CommonList<Project> getList(byte type, int page, boolean refresh) throws AppException { CommonList<Project> list = null; switch (type) { case TYPE_FEATURED: list = mApplication.getExploreFeaturedProject(page, refresh); break; case TYPE_POPULAR: list = mApplication.getExplorePopularProject(page, refresh); break; case TYPE_LATEST: list = mApplication.getExploreLatestProject(page, refresh); break; } return list; } @Override public void onItemClick(int position, Project project) { UIHelper.showProjectDetail(getActivity(), null, project.getId()); } }