Android聊天工具基于socket实现

2019-12-10 19:09:04王冬梅

5. 聊天界面     

public class Chat extends Activity {
 private String mUserName;
 private EditText mEdit;
 private ListView mMessage;
  
 private ReceiverMessage mRecMessage;
 private SendMessage mSendMesage;
 private List<Map<String, String>> mData = new ArrayList<Map<String, String>>();
 private MessagesAdapter mAdapter;
  
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.chat_layout);
   
  mUserName = getIntent().getStringExtra("user");
  mEdit = (EditText) findViewById(R.id.edit);
  mMessage = (ListView) findViewById(R.id.message);
   
  mRecMessage = new ReceiverMessage();
  mRecMessage.setOnReceiverListener(new RecListener());
  mRecMessage.run();
   
  mSendMesage = new SendMessage();
  mSendMesage.setOnSendListener(new SendListener());
   
  mAdapter = new MessagesAdapter(this, mData);
  mMessage.setAdapter(mAdapter);
 }
  
 public void send(View view) {
  String[] content = mEdit.getText().toString().trim().split(":");
  mSendMesage.send(mUserName, content[0], content[1]);
 }
  
 private class RecListener implements ReceiverMessage.OnReceiverListener {
  @Override
  public void onReceiver(String user, String msg) {
   Map<String, String> temp = new HashMap<String, String>();
   temp.put("user", user);
   temp.put("msg", msg);
   temp.put("pos", "right");
   mData.add(temp);
   mAdapter.notifyDataSetChanged();
  }
 }
  
 private class SendListener implements SendMessage.OnSendListener {
  @Override
  public void onSend(String[] msg) {
   Map<String, String> temp = new HashMap<String, String>();
   temp.put("user", "我");
   temp.put("msg", msg[1]);
   temp.put("pos", "left");
   mData.add(temp);
   mAdapter.notifyDataSetChanged();
  }
 }
  
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  if(R.id.logout == item.getItemId()) {
   Logout logout = new Logout();
   logout.setOnLogoutListener(new Logout.OnLogoutListener() {
    @Override
    public void onLogout(boolean success) {
     if(success) {
      Toast.makeText(Chat.this, "注销成功", Toast.LENGTH_SHORT).show();
      finish();
     }else {
      Toast.makeText(Chat.this, "注销失败", Toast.LENGTH_SHORT).show();
     }
    }
   });
    
   logout.logout(mUserName);
  }
   
  return super.onOptionsItemSelected(item);
 }
  
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main, menu);
  return super.onCreateOptionsMenu(menu);
 }
}