基于百度云推送的实时通信客户端实现(二)
2014-03-06 20:12
507 查看
上一篇说了欢迎和登陆界面的实现,现在来说一下关于聊天界面的搭建,整体界面采用了一个ListView,主要的布局很简单,在这里使用了ListView自定义是Adapter的写法
同时,我构造了一个TaliListInfo的类来和Adapter对应
闲话不多说,直接上代码
PushDEmoActivity.java
到这里,对话列表的界面搭建已经完成了,下一篇文章里面介绍聊天界面写法
同时,我构造了一个TaliListInfo的类来和Adapter对应
闲话不多说,直接上代码
package com.baidu.push.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.baidu.android.pushservice.PushConstants; import com.baidu.android.pushservice.PushManager; import com.demo.Adapter.ListAdapter; import com.demo.Adapter.TalkListInfo; import com.tuisong.R; import com.tuisong.Save_Read; import com.tuisong.Until; import com.tuisong.db.DBHelpter; import android.app.Activity; import android.app.NotificationManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView; import android.widget.ListView; import android.widget.RelativeLayout; public class PushDemoActivity extends Activity implements OnItemClickListener { private static ListView list; private static List<TalkListInfo> talk; private static ListAdapter adapter; RelativeLayout mainLayout = null; public static int initialCnt = 0; public Save_Read save = new Save_Read(); public static Map<String, String> map; public static DBHelpter help; public static String userid; public SharedPreferences sp; public static NotificationManager manager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); @SuppressWarnings("unused") NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); @SuppressWarnings("unused") MyReceiver receiver = new MyReceiver(); sp = this.getSharedPreferences("key", 0); SharedPreferences.Editor edtior = sp.edit(); edtior.putString("SSP", "1"); edtior.commit(); list = (ListView) findViewById(R.id.list); help = new DBHelpter(this); map = new HashMap<String, String>(); userid = sp.getString("Login", null); System.out.println("the login id is " + userid); talk = new ArrayList<TalkListInfo>(); talk = help.findList(userid); if (talk != null) { for (TalkListInfo t : talk) { map.put("name", t.getName()); map.put("time", t.getDate()); map.put("content", t.getItem()); } adapter = new ListAdapter(this, talk); list.setAdapter(adapter); } list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Intent intent = new Intent(PushDemoActivity.this, TalkActivity.class); intent.putExtra("name", talk.get(arg2).getName()); intent.putExtra("userid", userid); Until.setString(talk.get(arg2).getName()); startActivity(intent); } }); // 以apikey的方式登录,一般放在主Activity的onCreate中 PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY, Utils.getMetaValue(PushDemoActivity.this, "api_key")); } @Override public void onStart() { super.onStart(); } @Override public void onResume() { super.onResume(); SharedPreferences.Editor edtior = sp.edit(); edtior.putString("SSP", "0"); edtior.commit(); } @Override protected void onNewIntent(Intent intent) { // 如果要统计Push引起的用户使用应用情况,请实现本方法,且加上这一个语句 setIntent(intent); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); SharedPreferences.Editor edtior = sp.edit(); edtior.putString("SSP", "0"); edtior.commit(); } @Override public void onStop() { super.onStop(); PushManager.activityStoped(this); // SharedPreferences.Editor edtior = sp.edit(); // edtior.putString("Login", "-1"); // edtior.commit(); // } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); // SharedPreferences.Editor edtior = sp.edit(); // edtior.putString("Login", "-1"); // edtior.commit(); } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } public boolean onCreateOptionsMenu(Menu menu) { // 调用父类方法来加入系统菜单 // 虽然目前android还没有系统菜单,但是为了兼容到以后的版本,最好加上 super.onCreateOptionsMenu(menu); // 添加菜单项(多种方式) // 1.直接指定标题 menu.add(1, 0, 1, "退出"); // 3.显示指定菜单项的组号、ID、排序号、标题 // 如果希望显示菜单,请返回true return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // 响应每个菜单项(通过菜单项的ID) case 0: change(); finish(); // do something here break; default: // 对没有处理的事件,交给父类来处理 return super.onOptionsItemSelected(item); } // 返回true表示处理完菜单项的事件,不需要将该事件继续传播下去了 return true; } //修改当前活动activity的状态 public void change() { SharedPreferences.Editor edtior = sp.edit(); edtior.putString("Login", "-1"); edtior.commit(); } }
PushDEmoActivity.java
到这里,对话列表的界面搭建已经完成了,下一篇文章里面介绍聊天界面写法
相关文章推荐
- 基于百度云推送的实时通信客户端实现(一)
- c#中异步基于消息通信的完成端口的TCP/IP协议的组件实现(客户端-源代码)
- 基于TCP 实现客户端之间通信【1】
- SignalR实现服务器与客户端的实时通信
- 基于Vxworks实时操作系统的串口通信程序设计与实现
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
- SignalR 实现 Web 客户端与服务器实时通信
- c#中异步基于消息通信的完成端口的TCP/IP协议的组件实现(源代码) 客户端
- 基于非阻塞socket的多线程服务器的实现------一个服务器如何与多个客户端进行通信?
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
- 在 Linux 上实现基于 Socket 的多进程实时通信
- Java基于socket实现的客户端和服务端通信功能完整实例
- SignalR实现服务器与客户端的实时通信
- 实现采用客户/服务器通信模式,基于TCP网络通信协议的多客户端简单应用之案例分析
- Android Socket编程基于TCP实现客户端与服务器简易通信
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
- c#中异步基于消息通信的完成端口的TCP/IP协议的组件实现(源代码) 客户端
- 在 Linux 上实现基于 Socket 的多进程实时通信
- JAVA基于websocket实时通信的实现—GoEasy