package com.amlogic.tzr.charismatic_yichang.fragment; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; import com.amlogic.tzr.charismatic_yichang.R; import com.amlogic.tzr.charismatic_yichang.activity.NewsDetailActivity; import com.amlogic.tzr.charismatic_yichang.adapter.NewsAdapter; import com.amlogic.tzr.charismatic_yichang.bean.NewsListBean; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.util.ArrayList; import java.util.List; import cn.bmob.v3.BmobQuery; import cn.bmob.v3.listener.FindListener; /** * A simple {@link Fragment} subclass. */ public class NewsFragment extends Fragment { private static final String TAG = "NewsFragment"; public static final String BUNDLE_URL = "oder"; public static final String FLAG_NEW = "new"; public static final String FLAG_HOT = "hot"; public static final String FLAG_RECOMMAND = "recommand"; private static final int STATE_REFRESH = 0;// ����ˢ�� private static final int STATE_MORE = 1;// ���ظ��� private int limit = 10; // ÿҳ��������10�� private int curPage = 0; // ��ǰҳ�ı�ţ���0��ʼ private ILoadingLayout mILoadingLayout; private PullToRefreshListView news_Listview; private ListView mMsgListView; private String type; private View fragmentView; private Context context; private NewsAdapter mAdapter; private List<NewsListBean> list ; private BmobQuery<NewsListBean> bmobQuery; public NewsFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = getActivity(); list = new ArrayList<NewsListBean>(); Bundle arguments = getArguments(); if (arguments != null) { type = arguments.getString(BUNDLE_URL); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { fragmentView = inflater.inflate(R.layout.fragment_news, null); initPullToRefresh(); queryData(0,STATE_REFRESH,type); return fragmentView; } public static NewsFragment newInstance(String type) { Bundle bundle = new Bundle(); bundle.putString(BUNDLE_URL, type); NewsFragment fragment = new NewsFragment(); fragment.setArguments(bundle); return fragment; } private void initPullToRefresh() { news_Listview = (PullToRefreshListView) fragmentView.findViewById(R.id.prl_nf_list); mILoadingLayout = news_Listview.getLoadingLayoutProxy(); mILoadingLayout.setLastUpdatedLabel(""); mILoadingLayout.setPullLabel(getString(R.string.pull_to_refresh_bottom_pull)); mILoadingLayout.setRefreshingLabel(getString(R.string.pull_to_refresh_bottom_refreshing)); mILoadingLayout.setReleaseLabel(getString(R.string.pull_to_refresh_bottom_release)); news_Listview.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (firstVisibleItem == 0) { mILoadingLayout.setLastUpdatedLabel(""); mILoadingLayout .setPullLabel(getString(R.string.pull_to_refresh_top_pull)); mILoadingLayout .setRefreshingLabel(getString(R.string.pull_to_refresh_top_refreshing)); mILoadingLayout .setReleaseLabel(getString(R.string.pull_to_refresh_top_release)); } else if (firstVisibleItem + visibleItemCount + 1 == totalItemCount) { mILoadingLayout.setLastUpdatedLabel(""); mILoadingLayout .setPullLabel(getString(R.string.pull_to_refresh_bottom_pull)); mILoadingLayout .setRefreshingLabel(getString(R.string.pull_to_refresh_bottom_refreshing)); mILoadingLayout .setReleaseLabel(getString(R.string.pull_to_refresh_bottom_release)); } } }); news_Listview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh( PullToRefreshBase<ListView> refreshView) { queryData(0, STATE_REFRESH, type); } @Override public void onPullUpToRefresh( PullToRefreshBase<ListView> refreshView) { queryData(curPage, STATE_MORE, type); } }); news_Listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent newsId_intent=new Intent(context, NewsDetailActivity.class); String newsId=list.get(position-1).getObjectId(); String news_title=list.get(position-1).getNews_title(); Bundle bundle=new Bundle(); bundle.putCharSequence("news_id",newsId); bundle.putCharSequence("news_title",news_title); newsId_intent.putExtras(bundle); startActivity(newsId_intent); } }); mMsgListView = news_Listview.getRefreshableView(); mAdapter = new NewsAdapter(context, list); mMsgListView.setAdapter(mAdapter); } private void queryData(final int page, final int actionType, String type) { bmobQuery = new BmobQuery<NewsListBean>(); bmobQuery.addWhereEqualTo("news_type", type); bmobQuery.setLimit(limit); bmobQuery.setSkip(page * limit); bmobQuery.findObjects(context, new FindListener<NewsListBean>() { @Override public void onSuccess(List<NewsListBean> queryList) { if (queryList.size() > 0) { if (actionType == STATE_REFRESH) { curPage = 0; list.clear(); } for (NewsListBean bean : queryList) { list.add(bean); } curPage++; } else if (actionType == STATE_MORE) { showToast("没有更多数据了"); } else if (actionType == STATE_REFRESH) { } news_Listview.onRefreshComplete(); // list = queryList; mAdapter.setData(list); mAdapter.notifyDataSetChanged(); } @Override public void onError(int i, String s) { showToast("刷新失败:" + s); news_Listview.onRefreshComplete(); } }); } private void showToast(String msg) { Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } }