package com.threeH.MyExhibition.ui; import android.app.AlertDialog; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.*; import cn.mobiledaily.module.android.module.mobilepush.service.helper.AndroidMessageClient; import cn.mobiledaily.module.android.module.mobilepush.service.helper.OnMessageListener; import com.threeH.MyExhibition.R; import com.threeH.MyExhibition.adapters.SignExhiListAdapter; import com.threeH.MyExhibition.cache.XmlDB; import com.threeH.MyExhibition.common.StringPools; import com.threeH.MyExhibition.entities.Exhibition; import com.threeH.MyExhibition.tools.SharedPreferencesUtil; import com.threeH.MyExhibition.widget.XListView; import java.util.LinkedList; import java.util.List; /** * Created with IntelliJ IDEA. * User: pjq * Date: 13-6-19 * Time: 下午2:41 * To change this template use File | Settings | File Templates. */ public class SignupExhiListActivity extends BaseActivity implements ActivityInterface, AdapterView.OnItemClickListener,XListView.IXListViewListener { private XListView mListView; private List<Exhibition> mDataes = new LinkedList<Exhibition>(); private SignExhiListAdapter mAdapter; private Exhibition[] mMyExhibitions; private LoadDataTask loadDataTask; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case 1: setAdapter(); break; } } }; /** * 设置我的展会列表的数据 */ private void setAdapter(){ mAdapter = new SignExhiListAdapter(SignupExhiListActivity.this, mDataes,token); mListView.setAdapter(mAdapter); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentViewWithNoTitle(R.layout.signup_exhibition_page); findView(); initdata(); addAction(); } @Override protected void onPause() { super.onPause(); } @Override public void initdata() { loadDataTask = new LoadDataTask(); loadDataTask.execute(); } @Override public void findView(){ mListView = (XListView)findViewById(R.id.signup_exhi_listview); } @Override public void addAction() { try{ AndroidMessageClient client = new AndroidMessageClient(); client.init(token,new MyMessageListener()); }catch (Exception e){ e.printStackTrace(); } mListView.setOnItemClickListener(this); mListView.setPullLoadEnable(true); mListView.setXListViewListener(this); mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { final int i = position; if(mDataes.get(i-1).isAttention()){ new AlertDialog.Builder(SignupExhiListActivity.this) .setTitle("注意") .setMessage("您确认要删除该展会吗?") .setPositiveButton("确定",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SharedPreferencesUtil.removeObject(mDataes.get(i - 1).getExKey(), context, StringPools.SCAN_EXHIBITION_DATA); mDataes.remove(i-1); mAdapter.notifyDataSetChanged(); } }) .setNegativeButton("取消", null) .show(); } return true; } }); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(this,ExhibitionActivity.class); intent.putExtra("exhibition", mDataes.get(position - 1)); intent.putExtra("token",token); startActivity(intent); } private void onLoad() { mListView.stopRefresh(); mListView.stopLoadMore(); mListView.setRefreshTime(""); } @Override public void onRefresh() { mHandler.postDelayed(new Runnable() { @Override public void run() { mDataes.clear(); initdata(); onLoad(); } }, 2000); } @Override public void onLoadMore() { mHandler.postDelayed(new Runnable() { @Override public void run() { onLoad(); } }, 2000); } /** * 用于加载已报名列表的异步任务栈。 * 有网络时从网络上拉数据并做存储,无网络时从本地取数据。 * 获得数据后发送消息到消息队列。 */ class LoadDataTask extends AsyncTask<Void,Integer,Integer>{ @Override protected Integer doInBackground(Void... params) { new Thread(new Runnable() { @Override public void run() { try { String jsonData = mController.getService().ErollExList(token); if (null != jsonData && !"".equals(jsonData)) { XmlDB.getInstance(context).saveKey(StringPools.SIGNUP_EXHIBITION_DATA, jsonData); } else { jsonData = XmlDB.getInstance(context).getKeyStringValue(StringPools.SIGNUP_EXHIBITION_DATA, ""); } List<Object> list = SharedPreferencesUtil.getObject(context, StringPools.SCAN_EXHIBITION_DATA); if(list != null){ for(Object object : list){ ((LinkedList) mDataes).addFirst(object); } } mMyExhibitions = mGson.fromJson(jsonData, Exhibition[].class); for(Exhibition exhibition : mMyExhibitions){ mDataes.add(exhibition); } } catch (Exception e) { } Message message = handler.obtainMessage(); message.what = 1; handler.sendMessage(message); } }).start(); return null; } } class MyMessageListener implements OnMessageListener { @Override public void onMessageReceived(String message) { NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.appicon,message,System.currentTimeMillis()); Intent intent = new Intent(context,HomeActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,0); notification.setLatestEventInfo(context,"展会消息通知",message,pendingIntent); notification.defaults = Notification.DEFAULT_SOUND; notificationManager.notify(202,notification); } } }