package com.avoscloud.beijing.push.demo.keepalive; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.avos.avoscloud.AVInstallation; import com.avos.avoscloud.AVUtils; import com.avos.avoscloud.Session; import com.avos.avoscloud.SessionManager; import com.avoscloud.beijing.push.demo.keepalive.data.ChatDemoMessage; import com.avoscloud.beijing.push.demo.keepalive.data.ChatDemoMessage.MessageType; import android.app.Activity; import android.graphics.Point; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import android.widget.PopupWindow; public class PrivateConversationActivity extends Activity implements OnClickListener, MessageListener { public static final String DATA_EXTRA_SINGLE_DIALOG_TARGET = "single_target_peerId"; String targetPeerId; private ImageButton sendBtn; private EditText composeZone; String currentName; String selfId; ListView chatList; ChatDataAdapter adapter; List<ChatDemoMessage> messages = new LinkedList<ChatDemoMessage>(); Session session; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.heartbeat); targetPeerId = this.getIntent().getStringExtra(DATA_EXTRA_SINGLE_DIALOG_TARGET); this.setTitle(HTBApplication.lookupname(targetPeerId)); // 您可以在这里读取本地的聊天记录,并且加载进来。 //  我们会在未来加入这些代码 chatList = (ListView) this.findViewById(R.id.avoscloud_chat_list); adapter = new ChatDataAdapter(this, messages); chatList.setAdapter(adapter); sendBtn = (ImageButton) this.findViewById(R.id.sendBtn); composeZone = (EditText) this.findViewById(R.id.chatText); selfId = AVInstallation.getCurrentInstallation().getInstallationId(); currentName = HTBApplication.lookupname(selfId); session = SessionManager.getInstance(selfId); sendBtn.setOnClickListener(this); if (!AVUtils.isBlankString(getIntent().getExtras() .getString(Session.AV_SESSION_INTENT_DATA_KEY))) { String msg = getIntent().getExtras().getString(Session.AV_SESSION_INTENT_DATA_KEY); ChatDemoMessage message = JSON.parseObject(msg, ChatDemoMessage.class); messages.add(message); adapter.notifyDataSetChanged(); } } @Override public void onClick(View v) { String text = composeZone.getText().toString(); if (TextUtils.isEmpty(text)) { return; } composeZone.getEditableText().clear(); ChatDemoMessage message = new ChatDemoMessage(); message.setMessageContent(text); message.setMessageType(MessageType.Text); message.setMessageFrom(currentName); message.setToPeerIds(Arrays.asList(targetPeerId)); session.sendMessage(message.makeMessage()); messages.add(message); adapter.notifyDataSetChanged(); } @Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); } @Override public void onResume() { super.onResume(); ChatDemoMessageReceiver.registerSessionListener(targetPeerId, this); } @Override public void onPause() { super.onPause(); ChatDemoMessageReceiver.unregisterSessionListener(targetPeerId); } @Override public void onMessage(String msg) { ChatDemoMessage message = JSON.parseObject(msg, ChatDemoMessage.class); messages.add(message); adapter.notifyDataSetChanged(); } }