506 lines
16 KiB
Java
506 lines
16 KiB
Java
package cn.shangyu.gdxzExpert.activity;
|
|
|
|
import android.annotation.SuppressLint;
|
|
import android.app.Dialog;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.graphics.Color;
|
|
import android.text.TextUtils;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.AdapterView;
|
|
import android.widget.AdapterView.OnItemClickListener;
|
|
import android.widget.AdapterView.OnItemLongClickListener;
|
|
import android.widget.BaseAdapter;
|
|
import android.widget.ImageView;
|
|
import android.widget.TextView;
|
|
|
|
import com.gyf.immersionbar.ImmersionBar;
|
|
import com.lidroid.xutils.exception.HttpException;
|
|
import com.lidroid.xutils.http.HttpHandler;
|
|
import com.lidroid.xutils.http.RequestParams;
|
|
import com.lidroid.xutils.http.ResponseInfo;
|
|
import com.lidroid.xutils.http.callback.RequestCallBack;
|
|
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
|
|
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import cn.shangyu.gdxzExpert.R;
|
|
import cn.shangyu.gdxzExpert.base.BaseActivity;
|
|
import cn.shangyu.gdxzExpert.bean.BaseBean;
|
|
import cn.shangyu.gdxzExpert.bean.MessageListBean;
|
|
import cn.shangyu.gdxzExpert.bean.MessageListBean.MessageList;
|
|
import cn.shangyu.gdxzExpert.http.HttpHelper;
|
|
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.Constant;
|
|
import cn.shangyu.gdxzExpert.utils.GsonTools;
|
|
import cn.shangyu.gdxzExpert.utils.LogUtil;
|
|
import cn.shangyu.gdxzExpert.utils.SharePrefUtil;
|
|
import cn.shangyu.gdxzExpert.utils.StringUtil;
|
|
import cn.shangyu.gdxzExpert.utils.ToastUtil;
|
|
import cn.shangyu.gdxzExpert.utils.UIUtils;
|
|
import cn.shangyu.gdxzExpert.utils.Url;
|
|
import cn.shangyu.gdxzExpert.widget.ECListDialog;
|
|
import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState;
|
|
|
|
import static cn.shangyu.gdxzExpert.utils.Url.readAll;
|
|
|
|
/**
|
|
*
|
|
* @author ssy Copyright (C) 2015 河南商宇科技有限公司
|
|
*
|
|
* 功能说明:首页-系统消息
|
|
*/
|
|
|
|
public class SystemMessageActivity extends BaseActivity implements
|
|
OnItemClickListener, OnItemLongClickListener, OnCallBackFromNet {
|
|
|
|
// listview控件
|
|
private PullToRefreshListView ptrLv;
|
|
// 处理正在加载,空,错误的布局
|
|
private TextView load_empty;
|
|
private ArrayList<MessageList> MessageList = new ArrayList<MessageList>();
|
|
private String getmessageList = Url.getmessageList;
|
|
private MessageAdapter msgAdapter;
|
|
private HttpHandler<String> httpHandler;
|
|
public static int ERROR = 101;
|
|
public static final int READALL = 103;
|
|
public static int REQUEST_REFRESH = 102;
|
|
private String deleteUuid = null;
|
|
|
|
@Override
|
|
public void setTitle() {
|
|
// TODO Auto-generated method stub
|
|
top_title.setText("我的消息");
|
|
|
|
}
|
|
|
|
@SuppressWarnings({ "unchecked", "rawtypes" })
|
|
@Override
|
|
public View onCreateSuccessedView() {
|
|
// TODO Auto-generated method stub
|
|
ImmersionBar.with(this).keyboardEnable(true).statusBarDarkFont(true).titleBar(mToolbar).init();
|
|
View view = View.inflate(ct, R.layout.activity_system_message, null);
|
|
ptrLv = (PullToRefreshListView) view.findViewById(R.id.lv_item_message);
|
|
|
|
// 处理正在加载,空,错误的布局
|
|
load_empty = (TextView) view.findViewById(R.id.load_empty);
|
|
load_empty.setText("暂无系统消息");
|
|
ptrLv.setMode(Mode.PULL_FROM_START);
|
|
// 得到实际的ListView 设置点击
|
|
ptrLv.getRefreshableView().setOnItemClickListener(this);
|
|
ptrLv.getRefreshableView().setOnItemLongClickListener(this);
|
|
setLastUpdateTime();
|
|
ptrLv.setOnRefreshListener(new OnRefreshListener2() {
|
|
|
|
@Override
|
|
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
|
|
// TODO Auto-generated method stub
|
|
// 下拉刷新
|
|
getMessageList(getmessageList, true);
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onPullUpToRefresh(PullToRefreshBase refreshView) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
});
|
|
top_right_text.setVisibility(View.VISIBLE);
|
|
top_right_text.setText("一键已读");
|
|
top_right_text.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
readAll();
|
|
}
|
|
});
|
|
|
|
initData();
|
|
return view;
|
|
}
|
|
|
|
@Override
|
|
public ResultState onLoad() {
|
|
return ResultState.STATE_SUCCESSED;
|
|
}
|
|
|
|
@Override
|
|
protected void onResume() {
|
|
// TODO Auto-generated method stub
|
|
super.onResume();
|
|
// 取消所有的状态栏通知
|
|
// ECNotificationManager.getInstance().forceCancelNotification();
|
|
}
|
|
private void readAll()
|
|
{
|
|
Map<String, String> param = new HashMap<>();
|
|
sendJsonPostParamtoNetSignMD5(readAll,param,READALL,this);
|
|
}
|
|
|
|
/**
|
|
* 实例化数据 initData
|
|
*
|
|
* void
|
|
*/
|
|
public void initData() {
|
|
String result = SharePrefUtil.getString(ct, getmessageList, null);
|
|
if (!TextUtils.isEmpty(result)) {
|
|
processData(result);
|
|
} else {
|
|
// 显示加载框
|
|
showProgressDialog("正在加载");
|
|
}
|
|
getMessageList(getmessageList, true);
|
|
}
|
|
|
|
// 设置刷新时间
|
|
private void setLastUpdateTime() {
|
|
String text = CommonUtil.getStringDate();
|
|
ptrLv.getLoadingLayoutProxy().setLastUpdatedLabel(text);
|
|
}
|
|
|
|
// 刷新完成
|
|
private void onLoaded() {
|
|
closeProgressDialog();
|
|
ptrLv.onRefreshComplete();
|
|
}
|
|
|
|
/**
|
|
* 请求网络,获取消息的列表 getNewPatientList ssy
|
|
*
|
|
* @param loadUrl
|
|
* 请求地址 void
|
|
*/
|
|
private void getMessageList(final String loadUrl, final boolean isRefresh) {
|
|
String expertUuid = SharePrefUtil.getString(UIUtils.getContext(),
|
|
"uuid", "");
|
|
RequestParams params = new RequestParams();
|
|
params.addBodyParameter("expertUuid", expertUuid);
|
|
httpHandler = HttpHelper.loadData(HttpMethod.POST, loadUrl, params,
|
|
new RequestCallBack<String>() {
|
|
|
|
@Override
|
|
public void onSuccess(ResponseInfo<String> info) {
|
|
SharePrefUtil.saveString(ct, loadUrl, info.result);
|
|
processData(info.result);
|
|
}
|
|
|
|
@Override
|
|
public void onFailure(HttpException arg0, String arg1) {
|
|
LogUtil.i("数据请求失败了: " + arg1);
|
|
// CustomToast.show(ct, "加载失败,请稍后再试", 1);
|
|
onLoaded();
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void onDestroy() {
|
|
// TODO Auto-generated method stub
|
|
super.onDestroy();
|
|
closeProgressDialog();
|
|
if (httpHandler != null) {
|
|
httpHandler.cancel();// 取消网络请求
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 解析并处理数据
|
|
*
|
|
* @param result
|
|
*/
|
|
private void processData(String result) {
|
|
// 解析json数据
|
|
MessageListBean bean = GsonTools.fromGsonToBean(result,
|
|
MessageListBean.class);
|
|
if (StringUtil.isOneToCode(bean.code)) {
|
|
ToastUtil.showToast(bean.message);
|
|
ptrLv.setEmptyView(load_empty);
|
|
return;
|
|
}
|
|
// 初始化列表数据
|
|
MessageList.clear();
|
|
// 数据为空
|
|
if (bean.data == null || bean.data.size() == 0) {
|
|
load_empty.setVisibility(View.VISIBLE);
|
|
} else {
|
|
load_empty.setVisibility(View.GONE);
|
|
for (int i = 0; i < bean.data.size(); i++) {
|
|
if ("1".equals(bean.data.get(i).receiveType)) {// 1.专家 2.患者
|
|
MessageList.add(bean.data.get(i));
|
|
}
|
|
}
|
|
// MessageList.addAll(bean.data);
|
|
}
|
|
// 实例化适配器
|
|
msgAdapter = new MessageAdapter(ct, MessageList);
|
|
ptrLv.setAdapter(msgAdapter);
|
|
|
|
// 完成
|
|
onLoaded();
|
|
}
|
|
|
|
public class MessageAdapter extends BaseAdapter {
|
|
|
|
private Context context;
|
|
private List<MessageList> List;
|
|
|
|
public MessageAdapter(Context context,
|
|
ArrayList<MessageList> messageList) {
|
|
this.context = context;
|
|
this.List = messageList;
|
|
}
|
|
|
|
@Override
|
|
public int getCount() {
|
|
return List.size();
|
|
}
|
|
|
|
@Override
|
|
public View getView(final int position, View convertView,
|
|
ViewGroup parent) {
|
|
|
|
if (convertView == null) {
|
|
convertView = View
|
|
.inflate(context, R.layout.item_message, null);
|
|
mHolder = new NewsViewHolder();
|
|
mHolder.tv_title = (TextView) convertView
|
|
.findViewById(R.id.tv_title);// 标题
|
|
mHolder.tv_type = (TextView) convertView
|
|
.findViewById(R.id.tv_type);// 类型
|
|
mHolder.tv_content = (TextView) convertView
|
|
.findViewById(R.id.tv_content);// 内容
|
|
mHolder.tv_date = (TextView) convertView
|
|
.findViewById(R.id.tv_date);// 日期
|
|
mHolder.iv_msg = (ImageView) convertView
|
|
.findViewById(R.id.iv_msg);// 图片logo
|
|
convertView.setTag(mHolder);
|
|
} else {
|
|
mHolder = (NewsViewHolder) convertView.getTag();
|
|
}
|
|
|
|
// 给控件赋值.
|
|
MessageList msg = List.get(position);
|
|
String type = "";
|
|
if ("1".equals(msg.type)) {// 1.电话咨询提醒 2.门诊预约提醒 3.包月定制提醒消息
|
|
type = "(电话咨询)";
|
|
mHolder.iv_msg.setImageResource(R.drawable.icon_system_flowers1);
|
|
} else if ("2".equals(msg.type)) {
|
|
type = "(门诊预约)";
|
|
mHolder.iv_msg.setImageResource(R.drawable.icon_system_flowers1);
|
|
} else if ("3".equals(msg.type)) {
|
|
type = "(按月定制)";
|
|
mHolder.iv_msg.setImageResource(R.drawable.icon_system_flowers1);
|
|
} else if ("4".equals(msg.type)) {
|
|
type = "(鲜花服务)";
|
|
mHolder.iv_msg.setImageResource(R.drawable.icon_system_flowers1);
|
|
} else if ("5".equals(msg.type)) {
|
|
type = "(申请通知)";
|
|
mHolder.iv_msg
|
|
.setImageResource(R.drawable.icon_system_doc_patient1);
|
|
}
|
|
// else if ("7".equals(msg.type)) {
|
|
// type = "(订单通知)";
|
|
// mHolder.iv_msg.setImageResource(R.drawable.icon_system_doctor);
|
|
// }
|
|
else {
|
|
type = "(系统消息)";
|
|
mHolder.iv_msg.setImageResource(R.drawable.icon_system_notice1);
|
|
}
|
|
mHolder.tv_type.setText(type);
|
|
mHolder.tv_title.setText(msg.title);
|
|
mHolder.tv_content.setText(msg.content);
|
|
|
|
if (!TextUtils.isEmpty(msg.sendDate) && msg.sendDate.length() >= 16) {
|
|
mHolder.tv_date.setText(msg.sendDate.substring(0, 10));
|
|
} else if (!TextUtils.isEmpty(msg.sendDate)) {
|
|
mHolder.tv_date.setText(msg.sendDate);
|
|
}
|
|
|
|
// 判断当前这条消息是否已经读过
|
|
String readIDArray = SharePrefUtil.getString(context,
|
|
Constant.READ_MSG_ID_ARRAY_KEY, null);
|
|
if (!TextUtils.isEmpty(readIDArray)
|
|
&& readIDArray.contains(msg.uuid + msg.title)) {
|
|
mHolder.tv_title.setTextColor(Color.GRAY);
|
|
mHolder.tv_content.setTextColor(Color.GRAY);
|
|
mHolder.tv_type.setTextColor(Color.GRAY);
|
|
} else {
|
|
if (msg.isRead.equals("1")) {
|
|
mHolder.tv_title.setTextColor(Color.GRAY);
|
|
mHolder.tv_content.setTextColor(Color.GRAY);
|
|
mHolder.tv_type.setTextColor(Color.GRAY);
|
|
} else {
|
|
mHolder.tv_title.setTextColor(Color.BLACK);
|
|
mHolder.tv_content.setTextColor(Color.BLACK);
|
|
mHolder.tv_type.setTextColor(Color.BLACK);
|
|
}
|
|
|
|
}
|
|
|
|
return convertView;
|
|
}
|
|
|
|
@Override
|
|
public Object getItem(int position) {
|
|
// TODO Auto-generated method stub
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public long getItemId(int position) {
|
|
// TODO Auto-generated method stub
|
|
return 0;
|
|
}
|
|
|
|
}
|
|
|
|
private NewsViewHolder mHolder = null;
|
|
|
|
private class NewsViewHolder {
|
|
public ImageView iv_msg;
|
|
public TextView tv_date;
|
|
public TextView tv_content;
|
|
public TextView tv_type;
|
|
public TextView tv_title;
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onItemClick(AdapterView<?> parent, View view, int position,
|
|
long id) {
|
|
if (ptrLv.getRefreshableView().getHeaderViewsCount() > 0) {
|
|
position = position
|
|
- ptrLv.getRefreshableView().getHeaderViewsCount();
|
|
}
|
|
|
|
String messageUuid = MessageList.get(position).uuid;
|
|
String title = MessageList.get(position).title;
|
|
String content = MessageList.get(position).content;
|
|
String sendDate = MessageList.get(position).sendDate;
|
|
// 把当前被点击的这条新闻的id存起来 1#2#3#4
|
|
String readMsgIDArray = SharePrefUtil.getString(ct,
|
|
Constant.READ_MSG_ID_ARRAY_KEY, null);
|
|
String idArray = null;
|
|
if (TextUtils.isEmpty(readMsgIDArray)) {
|
|
// 唯一标示id,采用uuid与标题
|
|
idArray = messageUuid + title;
|
|
} else {
|
|
idArray = readMsgIDArray + "#" + messageUuid + title;
|
|
}
|
|
SharePrefUtil.saveString(ct, Constant.READ_MSG_ID_ARRAY_KEY, idArray);
|
|
|
|
// 通知ListView刷新
|
|
msgAdapter.notifyDataSetChanged();
|
|
String ms = MessageList.get(position).content;
|
|
Boolean mHave = ms.contains("申请成为您的随访患者");// 是否包含“申请成为您的随访患者”
|
|
// 如果返回的状态是5 添加好友申请点击item跳转的相应位置
|
|
if (MessageList.get(position).type.equals("5") && mHave == true) {
|
|
Intent intent = new Intent(ct, NewPatientActivity.class);
|
|
startActivity(intent);
|
|
} else {
|
|
Intent intent = new Intent(ct, SystemMessageDetailActivity.class);
|
|
intent.putExtra("messageUuid", messageUuid);
|
|
intent.putExtra("title", title);
|
|
intent.putExtra("content", content);
|
|
intent.putExtra("sendDate", sendDate);
|
|
startActivity(intent);
|
|
}
|
|
// ToastUtil.showToast("消息详情:"+MessageList.get(position).uuid);
|
|
}
|
|
|
|
@Override
|
|
protected void processClick(View v) {
|
|
// TODO Auto-generated method stub
|
|
}
|
|
|
|
@Override
|
|
public boolean onItemLongClick(AdapterView<?> parent, View view,
|
|
int position, long id) {
|
|
// TODO Auto-generated method stub
|
|
if (ptrLv.getRefreshableView().getHeaderViewsCount() > 0) {
|
|
position = position
|
|
- ptrLv.getRefreshableView().getHeaderViewsCount();
|
|
}
|
|
|
|
deleteUuid = MessageList.get(position).uuid;
|
|
@SuppressLint({"StringFormatInvalid", "LocalSuppress"}) final ECListDialog dialog = new ECListDialog(
|
|
SystemMessageActivity.this, new String[] { getString(
|
|
R.string.message_delete, "") });
|
|
dialog.setOnDialogItemClickListener(new ECListDialog.OnDialogItemClickListener() {
|
|
@Override
|
|
public void onDialogItemClick(Dialog d, int position) {
|
|
DeleteMessage();
|
|
dialog.dismiss();
|
|
}
|
|
});
|
|
dialog.setTitle("删除此系统消息");
|
|
dialog.show();
|
|
return true;
|
|
}
|
|
|
|
public void DeleteMessage() {
|
|
Map<String, String> param = new HashMap<String, String>();
|
|
param.put("uuid", deleteUuid);
|
|
sendParamtoNet(Url.getDeleteMessage, param, 101,
|
|
SystemMessageActivity.this, true);
|
|
}
|
|
|
|
@Override
|
|
public void onCallbackFromThread(String resultJson) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onCallBackFromThread(String resultJson, int resultCode) {
|
|
// TODO Auto-generated method stub
|
|
switch (resultCode)
|
|
{
|
|
case 101:
|
|
BaseBean bean = GsonTools.fromGsonToBean(resultJson, BaseBean.class);
|
|
if (bean.code.equals("1")) {
|
|
for (int i = 0; i < MessageList.size(); i++) {
|
|
if (deleteUuid.equals(MessageList.get(i).uuid)) {
|
|
MessageList.remove(i);
|
|
msgAdapter.notifyDataSetChanged();
|
|
}
|
|
}
|
|
if (MessageList.size() == 0) {
|
|
ptrLv.setEmptyView(load_empty);
|
|
}
|
|
} else {
|
|
ToastUtil.showMessage(bean.message);
|
|
}
|
|
break;
|
|
case READALL:
|
|
JSONObject jsonObject= null;
|
|
try {
|
|
jsonObject = new JSONObject(resultJson);
|
|
String message = jsonObject.getString("message");
|
|
ToastUtil.showMessage(message);
|
|
initData();
|
|
} catch (JSONException e) {
|
|
e.printStackTrace();
|
|
|
|
ToastUtil.showMessage("获取失败,请重试");
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|