您的位置:首页 > 其它

基于百度云推送的实时通信客户端实现(二)

2014-03-06 20:12 507 查看
上一篇说了欢迎和登陆界面的实现,现在来说一下关于聊天界面的搭建,整体界面采用了一个ListView,主要的布局很简单,在这里使用了ListView自定义是Adapter的写法

同时,我构造了一个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

到这里,对话列表的界面搭建已经完成了,下一篇文章里面介绍聊天界面写法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐