This is my code snippet
private class MMessageListener implements ChatMessageListener,ChatStateListener {
public MMessageListener(Context contxt) {
}
@Override
public void processMessage(final org.jivesoftware.smack.chat.Chat chat,
final Message message) {
Log.i(“MyXMPP_MESSAGE_LISTENER”, “Xmpp message received: '”
if (message.getType() == Message.Type.chat
&& message.getBody() != null) {
final ChatMessage chatMessage = gson.fromJson(
message.getBody(), ChatMessage.class);
processMessage(chatMessage);
}
}
@Override
public void stateChanged(Chat chat, ChatState state) {
switch (state){
case active:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// Toast.makeText(context, “active!”,
// Toast.LENGTH_SHORT).show();
MainActivity.txtStatus.setText(“active”);
}
});
Log.d(“state”,“active”);
break;
case composing:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
MainActivity.txtStatus.setText(“composing”);
// Toast.makeText(context, “composing!”,
// Toast.LENGTH_SHORT).show();
}
});
Log.d(“state”, “composing”);
break;
case paused:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
MainActivity.txtStatus.setText(“paused”);
// Toast.makeText(context, “composing!”,
// Toast.LENGTH_SHORT).show();
}
});
break;
case inactive:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
MainActivity.txtStatus.setText(“inactive”);
// Toast.makeText(context, “composing!”,
// Toast.LENGTH_SHORT).show();
}
});
break;
case gone:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
MainActivity.txtStatus.setText(“gone”);
// Toast.makeText(context, “composing!”,
// Toast.LENGTH_SHORT).show();
}
});
break;
}
}
private void processMessage(final ChatMessage chatMessage) {
chatMessage.isMine = false;
MainActivity.chatlist.add(chatMessage);
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
MainActivity.chatAdapter.notifyDataSetChanged();
}
});
}
and i call stateManager.setCurrentState(ChatState.composing, Mychat); on edittext key listener but i would like to know is there any way that we don’t have to call current status explicitly. I mean statechanged should get called automatically