/**============================================================ * 版权: 久其软件 版权所有 (c) * 包: com.jiuqi.njt.ui * 修改记录: * 日期 作者 内容 * ============================================================= * 2013-7-30 liyue * ============================================================*/ package com.jiuqi.njt.ui; import java.util.ArrayList; import java.util.Date; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.ImageView.ScaleType; import android.widget.LinearLayout.LayoutParams; import com.jiuqi.mobile.nigo.comeclose.bean.LoadOnGetList; import com.jiuqi.mobile.nigo.comeclose.bean.app.news.NoticeNewsBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.AdminAreaBean; import com.jiuqi.mobile.nigo.comeclose.manager.app.INewsManager; import com.jiuqi.mobile.nigo.comeclose.manager.app.SelectNewsKey; import com.jiuqi.mobile.nigo.comeclose.manager.app.SelectNewsParam; import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext; import com.jiuqi.njt.R; import com.jiuqi.njt.data.MyApp; import com.jiuqi.njt.model.CModuleBean; import com.jiuqi.njt.register.KNoticeNewsBean; import com.jiuqi.njt.register.KNoticeNewsBeanUtil; import com.jiuqi.njt.register.NoticeNewsBeanDBUtil; import com.jiuqi.njt.util.ActivityUtil; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.DateUtil; import com.jiuqi.njt.util.TitleBarUtil; import com.jiuqi.njt.util.UIUtil; import com.jiuqi.njt.util.XzqhUtil; import com.jiuqi.njt.widget.NjtTitleBar; import com.jiuqi.njt.widget.XListView; import com.jiuqi.njt.widget.XListView.IXListViewListener; import com.jiuqi.njt.widget.XListView.ListFooteState; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; /** * <p> * 农信网新闻列表 * </p> * * @author malingya * @version 2013-10-11 */ public class NxwNewsListActivity extends Activity implements IXListViewListener { private Context context = this; private String TAG = this.getClass().getName(); private Button btnProvince; private AdminAreaBean xzqh = null; private XListView newslistView; private MyListAdapter mAdapter; private ArrayList<NoticeNewsBean> items = new ArrayList<NoticeNewsBean>(); private queryResultAsyncTask queryTask; private LinearLayout contentlayout; private View loadlayout; private LinearLayout tablelayout; private int newstype; private String repairType; private long startIndex = 0;// 起始索引 private int totalCount = 0;// 总记录数 private String title; private MyApp application; private NjtTitleBar titleBar; DisplayImageOptions options; // DisplayImageOptions是用于设置图片显示的类 ImageLoader imageLoader = ImageLoader.getInstance(); private int width,heigh; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); doinit(); } private void doinit() { initParam(); initWidgets(); initListeners(); } private void initParam() { width = ActivityUtil.getWindowWidth(NxwNewsListActivity.this); // 屏幕宽度(像素); heigh = ActivityUtil.getWindowHeight(NxwNewsListActivity.this); application = (MyApp) getApplication(); helper = new NoticeNewsBeanDBUtil(context); if (null != getIntent().getStringExtra("repairType")) { title = getIntent().getStringExtra(Constants.PARAM_TITLE); newstype = 9; repairType = getIntent().getStringExtra("repairType"); }else { CModuleBean cBean = (CModuleBean) getIntent().getSerializableExtra( Constants.PARAM_MODULEBEAN); if (cBean != null) { switch (cBean.getModuleFlag()) { case zxzx: title = "最新资讯"; newstype = 6; break; case njbt: title = "农机补贴"; newstype = 2; break; case ggtz: title = "公告通知"; newstype = 1; break; case zcfg: title = "政策法规"; newstype = 3; break; case gddt: title = "各地动态"; newstype = 7; break; case csdt:// 暂无模块 break; default: break; } } } } private void initWidgets() { // title = TextUtils.isEmpty(getIntent().getStringExtra( // Constants.PARAM_TITLE)) ? "" : getIntent().getStringExtra( // Constants.PARAM_TITLE); String btnLeftTitle = TextUtils.isEmpty(getIntent().getStringExtra( Constants.PARAM_BTNLEFT_TITLE)) ? Constants.MAINPAGE_TITLE_TEXT : getIntent().getStringExtra(Constants.PARAM_BTNLEFT_TITLE); setContentView(R.layout.nxw_module_list); View rlTitleBar = findViewById(R.id.titleBarStub); btnProvince = (Button) findViewById(R.id.btnProvince); contentlayout = (LinearLayout) findViewById(R.id.content_layout); loadlayout = findViewById(R.id.load_Layout); tablelayout = (LinearLayout) findViewById(R.id.tablelayout); newslistView = (XListView) findViewById(R.id.listView); if(2==newstype){ UIUtil.hideView(tablelayout); btnLeftTitle = "".equals(application.getProvince())?"全国":application.getProvince(); titleBar = TitleBarUtil.createTitleBar(this, rlTitleBar, title, Constants.BTN_BACK_TEXT, new OnClickListener() { @Override public void onClick(View v) { NxwNewsListActivity.this.finish(); } }, btnLeftTitle, new OnClickListener() { @Override public void onClick(View v) { UIUtil.requestNewXzqh(NxwNewsListActivity.this); } }); }else{ titleBar = TitleBarUtil.createTitleBar(this, rlTitleBar, title, Constants.BTN_BACK_TEXT, new OnClickListener() { @Override public void onClick(View v) { NxwNewsListActivity.this.finish(); } }, btnLeftTitle, new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(NxwNewsListActivity.this,NjtMainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); NxwNewsListActivity.this.finish(); } }); } if (!TextUtils.isEmpty(repairType)) { UIUtil.hideView(tablelayout); } if (application.getProvince() != null && application.getProvinceCode() != null) { if (newstype != 9) { btnProvince.setText(application.getProvince()); xzqh = new AdminAreaBean(); xzqh.setCode(UIUtil.tryToLong(application.getProvinceCode())); } } toQuery(); } private void initListeners() { newslistView.setXListViewListener(this); newslistView.setPullLoadEnable(true); // setFootHintText(); btnProvince.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { UIUtil.requestXzqh(NxwNewsListActivity.this, null, 1); } }); } private NoticeNewsBeanDBUtil helper ; private void toQuery() { if(1==newstype){ List<KNoticeNewsBean> dataList = helper.queryAll(); for (KNoticeNewsBean kNoticeNewsBean : dataList) { items.add(KNoticeNewsBeanUtil.convertToNoticeNewsBean(kNoticeNewsBean)); } initUI(); }else{ queryTask = new queryResultAsyncTask(); queryTask.execute(); } } private void initUI() { UIUtil.hideView(loadlayout); UIUtil.showView(contentlayout); setFootHintText(); mAdapter = new MyListAdapter(this, items); newslistView.setAdapter(mAdapter); onLoad(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == Constants.REQUEST_XZQH_CODE) { if (resultCode == RESULT_OK) { AdminAreaBean xzqh = (AdminAreaBean) data .getSerializableExtra(Constants.PARAM_XZQH); this.xzqh = xzqh; btnProvince.setText(xzqh.getFullName()); if(2==newstype){ titleBar.getBtnRight().setText(xzqh.getFullName()); } startIndex = 0; toQuery(); } } } /** * 提交信息,访问网络时必须变成异步任务才可以提交,2.3规则。 */ private class queryResultAsyncTask extends AsyncTask<Void, Void, LoadOnGetList<? extends NoticeNewsBean>> { @Override protected void onPreExecute() { } @Override protected LoadOnGetList<? extends NoticeNewsBean> doInBackground( Void... params) { LoadOnGetList<? extends NoticeNewsBean> newslist = new LoadOnGetList<NoticeNewsBean>(); try { MyApp application = (MyApp) getApplication(); ClientContext context = application.getClientContext(); if (!application.getIsLogin()) { context = null; } if (null == context) { context = ClientContext.getClientContext( Constants.SERVER_URL, Constants.ANONYMOUS, Constants.ANONYMOUS); application.setClientContext(context); } long code = 0; if (null != xzqh) { code = xzqh.getCode(); } else { if(newstype != 9){ code = new XzqhUtil(context).searchAread( application.getProvince(), application.getCity(), null); } } SelectNewsKey key = new SelectNewsKey(); key.setNoticeNewsParams(newstype,code); // SelectNewsParam para=new SelectNewsParam(); // para.setFieldName("createDate"); // para.setMinValue(new Date().getTime()); // SelectNewsParam param = new SelectNewsParam("createDate", // startDate1, endDate1); // 维修保养m需要添加一个维修类型 SelectNewsParam param = new SelectNewsParam( "bigMachineCategories", "all".equals(repairType) ? null : repairType); SelectNewsParam param2 = new SelectNewsParam("status",2); key.addParams(param); key.addParams(param2); key.setSize(Constants.PAGE_SIZE); key.setStartIndex(startIndex); INewsManager newsManager = context .getManager(INewsManager.class); newslist = newsManager.get(NoticeNewsBean.class, key); newslist.getTotalCount(); } catch (Exception e) { e.printStackTrace(); } return newslist; } @Override protected void onCancelled() { super.onCancelled(); } @Override protected void onPostExecute( LoadOnGetList<? extends NoticeNewsBean> result) { if (startIndex == 0) { items.clear(); } startIndex += result.getList().size();// 设置下次读取的开始索引 totalCount = result.getList().size(); items.addAll((ArrayList<NoticeNewsBean>) result.getList()); initUI(); } } private void onLoad() { newslistView.setSelection(((int)(startIndex))-totalCount); newslistView.stopRefresh(); newslistView.stopLoadMore(); newslistView.setRefreshTime(DateUtil.getTimeStamp(new Date(), DateUtil.MM_DD_HH_MM_SS)); } @Override public void onRefresh() { startIndex = 0; toQuery(); } @Override public void onLoadMore() { if (startIndex%Constants.PAGE_SIZE == 0) { toQuery(); } else { if (totalCount != 0) { UIUtil.showMsg(NxwNewsListActivity.this, "没有更多"); } setFootHintText(); onLoad(); } } public void setFootHintText() { if (totalCount == 0 ) { newslistView.setListFooteState(ListFooteState.noData); } else if(totalCount % Constants.PAGE_SIZE != 0){ newslistView.setListFooteState(ListFooteState.noMoreData); }else { newslistView.setListFooteState(ListFooteState.nomal); } newslistView.showNoData(); } class MyListAdapter extends BaseAdapter { private Context context; private ArrayList<NoticeNewsBean> _items = new ArrayList<NoticeNewsBean>(); private LayoutInflater flater; public MyListAdapter(Context context, ArrayList<NoticeNewsBean> items) { this.context = context; if (null != items) { this._items = items; } flater = LayoutInflater.from(context); } @Override public int getCount() { return _items.size(); } @Override public Object getItem(int position) { return _items.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (null == convertView) { holder = new ViewHolder(); convertView = flater.inflate(R.layout.news_list_img_item, null); LinearLayout OneLinear = (LinearLayout) convertView.findViewById(R.id.OneLinear); LinearLayout linear = (LinearLayout) convertView.findViewById(R.id.Linear); LinearLayout linearTwo = (LinearLayout) convertView.findViewById(R.id.linearTwo); linear.setLayoutParams(new LinearLayout.LayoutParams(width,(int)(width*(0.20)))); linearTwo.setLayoutParams(new LinearLayout.LayoutParams((int)(width*(0.75)),LayoutParams.MATCH_PARENT)); linearTwo.setPadding(0, 0, (int)(width*(0.02)), 0); TextView textTop = (TextView) convertView .findViewById(R.id.text_top); TextView textBottomLeft = (TextView) convertView .findViewById(R.id.phoneRe); TextView textBottomRight = (TextView) convertView .findViewById(R.id.dataRe); // NetImageView cover = (NetImageView) convertView.findViewById(R.id.phot); ImageView cover = (ImageView) convertView.findViewById(R.id.phot); cover.setLayoutParams(new LinearLayout.LayoutParams((int)(width*(0.25)),LayoutParams.MATCH_PARENT)); cover.setPadding(0, (int) (width * 0.01), (int) (width * 0.02), (int) (width * 0.01)); cover.setScaleType(ScaleType.FIT_XY); // cover.setScaleType(ScaleType.FIT_CENTER); textTop.setPadding(0, 0, (int) (width * 0.02), 0); holder.setTvTitleTop(textTop); holder.setTvTitleBootomLeft(textBottomLeft); holder.setTvTitleBootomRight(textBottomRight); holder.setCover(cover); holder.setLinearLayout(OneLinear); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final NoticeNewsBean obj = _items.get(position); if (null != obj) { holder.getTvTitleTop().setText(getTitile(obj)); holder.getTvTitleBootomLeft() .setText( obj.getAddPersonName() + " | " + obj.getCreateDateStr()); holder.getTvTitleBootomRight().setText(""); holder.getTvTitleBootomRight().setText(""); if (null != obj.getStartMsg()&&!"".equals(obj.getStartMsg())) { // holder.getCover().setImageUrl(Constants.SERVER_URL+"/"+"attached"+"/"+obj.getStartMsg()); ImageLoader.getInstance().displayImage(Constants.SERVER_URL+"/"+"attached"+"/"+obj.getStartMsg(), holder.getCover(), options); // ImageLoader.getInstance().displayImage("http://www.njxxw.com.cn/UpLoadImg/2013110815543557229.png",holder.getCover(), options); }else { holder.getCover().setImageDrawable(context.getResources().getDrawable(R.drawable.ic_empty)); } holder.getLinearLayout().setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context, NxwModulerDetailActivity.class); intent.putExtra(Constants.PARAM_TITLE, title); intent.putExtra( Constants.PARAM_URL, Constants.NXW_MODULER_URL_DETAIL_BASE + obj.getGuid()); intent.putExtra("position", position); intent.putExtra("newslist", items); startActivity(intent); } }); } else { holder.getTvTitleTop().setText("无数据"); } return convertView; } private String getTitile(NoticeNewsBean bean) { String titleString = ""; if (!TextUtils.isEmpty(repairType)) { titleString = setNullToStr(bean.getTitle()); } else { titleString = "[" + provinceName(bean.getAdminAreaCode() .getProvinceName()) + "]" + setNullToStr(bean.getTitle()); } return titleString; } } private String provinceName(String name) { String provinceName = name; if (provinceName != null && !"".equals(provinceName)) { if ("内蒙古自治区".equals(provinceName) || "黑龙江省".equals(provinceName) || "黑龙江".equals(provinceName)) { return provinceName.substring(0, 3); } else { return provinceName.substring(0, 2); } } else { provinceName = "全国"; } return provinceName; } class ViewHolder { private TextView tvTitleTop; private TextView tvTitleBootomLeft; private TextView tvTitleBootomRight; private ImageView cover; private LinearLayout OneLinear; public TextView getTvTitleTop() { return tvTitleTop; } public void setTvTitleTop(TextView tvTitleTop) { this.tvTitleTop = tvTitleTop; } public TextView getTvTitleBootomLeft() { return tvTitleBootomLeft; } public void setTvTitleBootomLeft(TextView tvTitleBootomLeft) { this.tvTitleBootomLeft = tvTitleBootomLeft; } public TextView getTvTitleBootomRight() { return tvTitleBootomRight; } public void setTvTitleBootomRight(TextView tvTitleBootomRight) { this.tvTitleBootomRight = tvTitleBootomRight; } public LinearLayout getLinearLayout() { return OneLinear; } public void setLinearLayout(LinearLayout OneLinear) { this.OneLinear = OneLinear; } public ImageView getCover() { return cover; } public void setCover(ImageView cover) { this.cover = cover; } } public String setNullToStr(String str) { if (null == str) { return ""; } else { return str; } } }