This commit is contained in:
2025-11-18 15:12:24 +08:00
parent c173c425ce
commit a7d2035e70
1361 changed files with 367452 additions and 0 deletions
@@ -0,0 +1,505 @@
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;
}
}
}