package com.partynetwork.iparty.imessage; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Handler.Callback; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; import com.partynetwork.dataprovider.DataProvider.IJsonResultListener; import com.partynetwork.dataprovider.json.NetworkEntity; import com.partynetwork.dataprovider.json.struct.Message_getMessageArrayRequest; import com.partynetwork.dataprovider.json.struct.Message_getMessageArrayResponse; import com.partynetwork.dataprovider.util.ActionUtil; import com.partynetwork.dataprovider.util.T; import com.partynetwork.iparty.R; import com.partynetwork.iparty.app.AppContext; import com.partynetwork.iparty.app.entities.Notice; import com.partynetwork.iparty.app.manager.NoticeManager; import com.partynetwork.myview.mytoast.BothPopup; public class MessageInfoActivity extends Activity implements IJsonResultListener, Callback { public static final String MESSAGE_TYPE = "messageType"; /** * 返回按钮 */ @ViewInject(R.id.menu_head_left) private LinearLayout backBtn; /** * 确定按钮 */ @ViewInject(R.id.menu_head_right) private RelativeLayout rightBtn; /** * 页面标题 */ @ViewInject(R.id.menu_head_middle_text) private TextView headTitle; /** * 确定的文本框 */ @ViewInject(R.id.menu_head_right_tv) private TextView rightTv; /** * listview */ @ViewInject(R.id.listview) private ListView listView; /** 消息类别 */ private int messageType; /** 系统消息配器 */ private MessageInfoAdapter messageInfoAdapter; /** 弹出框 */ private BothPopup mBothPopup; private List<Notice> infoList; private Handler mHandler; /** * * 覆盖方法 * * @see android.app.Activity#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.message_info); messageType = getIntent().getIntExtra(MESSAGE_TYPE, 0); ViewUtils.inject(this); initView(); init(); } private void initView() { listView = (ListView) findViewById(R.id.listview); infoList = new ArrayList<Notice>(); mBothPopup = new BothPopup(this); mHandler = new Handler(this); } /** * 初始化 */ private void init() { sendRequest(); initData(); } /** * 初始化数据 */ private void initData() { String title = ""; switch (messageType) { case ActionUtil.Message.MESSAGE_TYPE_SYSTEM: title = "系统消息"; break; case ActionUtil.Message.MESSAGE_TYPE_PARTY: title = "iParty提醒"; break; case ActionUtil.Message.MESSAGE_TYPE_GREET: title = "打招呼"; break; case ActionUtil.Message.MESSAGE_TYPE_FRIEND: title = "新的i好友"; break; case ActionUtil.Message.MESSAGE_TYPE_AT: title = "提到我的"; break; case ActionUtil.Message.MESSAGE_TYPE_VOTE: title = "投票"; break; case ActionUtil.Message.MESSAGE_TYPE_DISCUSS: title = "评论"; break; case ActionUtil.Message.MESSAGE_TYPE_PRAISE: title = "赞"; break; default: title = "系统消息"; break; } // 名称 this.headTitle.setText(title); messageInfoAdapter = new MessageInfoAdapter(this, infoList); listView.setAdapter(messageInfoAdapter); new Thread() { @Override public void run() { infoList.removeAll(infoList); List<Notice> lists = NoticeManager.getInstance( MessageInfoActivity.this).getNoticeListByType( messageType); if (lists != null) { infoList.addAll(lists); } mHandler.sendEmptyMessage(0); } }.start(); } /** * 发送请求 */ private void sendRequest() { AppContext config = (AppContext) getApplication(); Message_getMessageArrayRequest request = new Message_getMessageArrayRequest(); request.setUserId(config.getLoginUid()); request.setMessageType(messageType); config.getmDataProvider().getJsonFromNetwork(request, this); } /** * 事件监听 * * @param view */ @OnClick({ R.id.menu_head_left, R.id.menu_head_right }) public void onClick(View view) { switch (view.getId()) { case R.id.menu_head_left: // 关闭 finish(); break; case R.id.menu_head_right: // 清空 mBothPopup.setTitle("清空操作将删除所有记录\n你确定要清空吗?"); mBothPopup.setListener(new OnClickListener() { @Override public void onClick(View v) { deleteAll(); finish(); } }); mBothPopup.showAtLocation(headTitle); break; default: break; } } /** * 删除所有本分类下的消息记录 */ private void deleteAll() { NoticeManager.getInstance(this).delNoticeByType(messageType); } public void onNetworkRequest() { } public void onResultSuccess(NetworkEntity entity) { if (entity.getRequest().getAction() .equals(new Message_getMessageArrayRequest().getAction())) { Message_getMessageArrayResponse mResponse = (Message_getMessageArrayResponse) entity .getResponse(); Notice[] infoArray = mResponse.getDetails(); if (infoArray != null) { infoList.addAll(Arrays.asList(infoArray)); messageInfoAdapter.notifyDataSetChanged(); for (Notice notcie : infoArray) { notcie.setNoticeType(messageType); } NoticeManager.getInstance(this).saveAllNotice( Arrays.asList(infoArray)); } } } public void onResultFail(String result) { T.showTips(this, R.drawable.tips_error, result); } @Override public boolean handleMessage(Message arg0) { switch (arg0.what) { case 0: // 刷新 messageInfoAdapter.notifyDataSetChanged(); break; default: break; } return false; } }