/**============================================================
* 版权: 久其软件 版权所有 (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;
}
}
}