package cn.shangyu.gdxzExpert.activity; import android.content.Intent; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.LinearLayout; import android.widget.TextView; import com.gyf.immersionbar.ImmersionBar; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import cn.shangyu.gdxzExpert.R; import cn.shangyu.gdxzExpert.adapter.NewsAdapter; import cn.shangyu.gdxzExpert.base.BaseActivity; import cn.shangyu.gdxzExpert.bean.NewListBean; import cn.shangyu.gdxzExpert.bean.NewListBean.NewsList; import cn.shangyu.gdxzExpert.http.OnCallBackFromNet; import cn.shangyu.gdxzExpert.pulltorefreshview.PullToRefreshBase; import cn.shangyu.gdxzExpert.pulltorefreshview.PullToRefreshBase.Mode; import cn.shangyu.gdxzExpert.pulltorefreshview.PullToRefreshBase.OnRefreshListener2; import cn.shangyu.gdxzExpert.pulltorefreshview.PullToRefreshListView; import cn.shangyu.gdxzExpert.utils.CommonUtil; import cn.shangyu.gdxzExpert.utils.GsonTools; import cn.shangyu.gdxzExpert.utils.SharePrefUtil; import cn.shangyu.gdxzExpert.utils.StringUtil; import cn.shangyu.gdxzExpert.utils.ToastUtil; import cn.shangyu.gdxzExpert.utils.Url; import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState; public class SearchNewsActivity extends BaseActivity implements OnCallBackFromNet, OnItemClickListener { private PullToRefreshListView ptrLv; private LinearLayout ll_empty; private TextView tv_empty_msg; private int page = 1; private String searchStr; private SearchNewsActivity mActivity; private ArrayList newsList = new ArrayList(); private NewsAdapter newsAdapter; @Override public void setTitle() { // TODO Auto-generated method stub top_title.setText("肝胆新闻"); if(CommonUtil.BigModule()) { top_title.setTextSize(23); } } @Override public View onCreateSuccessedView() { // TODO Auto-generated method stub ImmersionBar.with(this).keyboardEnable(true).statusBarDarkFont(true).titleBar(mToolbar).init(); View view; if(CommonUtil.BigModule()) { view = View.inflate(ct, R.layout.activity_search_news_big, null); } else { view = View.inflate(ct, R.layout.activity_search_news, null); } mActivity = this; // 下拉刷新的listview控件 ptrLv = (PullToRefreshListView) view.findViewById(R.id.lv_item_news); // 空布局,处理 ll_empty = (LinearLayout) view.findViewById(R.id.ll_empty); tv_empty_msg = (TextView) view.findViewById(R.id.tv_empty_msg); // 设置空的提示信息,默认是“暂时没有数据” tv_empty_msg.setText("暂无肝胆新闻"); ptrLv.setMode(Mode.BOTH); // 得到实际的ListView 设置点击 ptrLv.getRefreshableView().setOnItemClickListener(this); setLastUpdateTime(); ptrLv.setOnRefreshListener(new OnRefreshListener2() { @Override public void onPullDownToRefresh(PullToRefreshBase refreshView) { // 加载顶部新闻 page = 1; getNewsList(); } @Override public void onPullUpToRefresh(PullToRefreshBase refreshView) { page++; getNewsList(); // getNewsList(Url.getNewsList, false, false, page); } }); initIntent(); return view; } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); String newsuuid = SharePrefUtil .getString(mActivity, "callnewsUuid", ""); if (newsList != null) { if (!newsuuid.equals("")) { for (int i = 0; i < newsList.size(); i++) { if (newsList.get(i).getUuid().equals(newsuuid)) { newsList.get(i).setReadnum( SharePrefUtil.getString(mActivity, "callnewsread", "")); newsList.get(i).setAgreenum( SharePrefUtil.getString(mActivity, "callnewsagree", "")); } } if (newsAdapter != null) { // newsList.addAll(bean1.data); newsAdapter.getDatas(newsList); newsAdapter.notifyDataSetChanged(); } } } SharePrefUtil.clear(mActivity, "callnewsUuid"); } public void initIntent() { Intent getintent = getIntent(); searchStr = getintent.getStringExtra("search"); getNewsList(); } public static final int GET_SEARCH_NEWS_RESULT = 101; private void getNewsList() { // TODO Auto-generated method stub Map param = new HashMap(); param.put("page", String.valueOf(page)); param.put("keywords", searchStr); param.put("type", "1"); sendJsonPostParamtoNetSignMD5(Url.getNewsListbykeywordsNew, param, GET_SEARCH_NEWS_RESULT, mActivity); } private void setLastUpdateTime() { String text = CommonUtil.getStringDate(); ptrLv.getLoadingLayoutProxy().setLastUpdatedLabel(text); } private void onLoaded() { dismissLoadingProgress(); ptrLv.onRefreshComplete(); } @Override public ResultState onLoad() { // TODO Auto-generated method stub return ResultState.STATE_SUCCESSED; } @Override protected void processClick(View v) { // TODO Auto-generated method stub } @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // TODO Auto-generated method stub NewsList news = newsList.get(position-1); Intent intent = new Intent(mActivity, NewsDetailActivity.class); intent.putExtra("url", Url.urlHtml + news.path); // intent.putExtra("title", news.title); intent.putExtra("title", "新闻详情"); intent.putExtra("newsuuid", news.uuid); intent.putExtra("newsagreenum", news.agreenum); intent.putExtra("newsreadnum", news.readnum); intent.putExtra("newsTitle", news.title); intent.putExtra("summary", news.summary); intent.putExtra("imageUrl", Url.urlHtml + news.headImg); intent.putExtra("flag", 3); mActivity.startActivity(intent); } @Override public void onCallbackFromThread(String resultJson) { // TODO Auto-generated method stub processData(resultJson); } NewListBean bean1; public void processData(String result) { bean1 = GsonTools.fromGsonToBean(result, NewListBean.class);// 测试的NewsListBean if (StringUtil.isOneToCode(bean1.code)) { ToastUtil.showToast(bean1.message); // 显示空布局 ptrLv.setEmptyView(ll_empty); // 完成刷新 onLoaded(); return; } // 是否是刷新,还是加载更多 if (page == 1) { // 初始化新闻 newsList.clear(); // 数据为空 if (bean1.data == null || bean1.data.size() == 0) { // 显示空布局 ptrLv.setEmptyView(ll_empty); // 完成刷新 onLoaded(); return; } else { newsList.addAll(bean1.data); } } else { newsList.addAll(bean1.data); } // 更新新闻 if (newsAdapter == null) { newsAdapter = new NewsAdapter(mActivity); newsAdapter.getDatas(newsList); ptrLv.getRefreshableView().setAdapter(newsAdapter); } else { newsAdapter.getDatas(newsList); newsAdapter.notifyDataSetChanged(); } // 完成刷新 onLoaded(); // 得到总页码数 int totalPage = bean1.totalPage; // 是否有更多 if (totalPage <= 1 || totalPage < page) { if (page != 1) { ToastUtil.showToast("没有更多新闻了"); } ptrLv.setMode(Mode.PULL_FROM_START); } else { ptrLv.setMode(Mode.BOTH); } setLastUpdateTime(); } @Override public void onCallBackFromThread(String resultJson, int resultCode) { // TODO Auto-generated method stub } }