package theintelligentminds.messenger; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.text.Html; import android.text.Spanned; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import java.util.TreeSet; import at.intelligentminds.client.ConnectionProvider; import at.intelligentminds.client.Message; import theintelligentminds.messenger.emoji.EmojiconTextView; public class ChatArrayAdapter extends ArrayAdapter<ChatMessage> { private EmojiconTextView chatText; private List<ChatMessage> chatMessageList = new ArrayList<ChatMessage>(); private LinearLayout singleMessageContainer; @Override public void add(ChatMessage object) { chatMessageList.add(object); super.add(object); } public void refreshFromMessagesList(TreeSet<Message> messages){ ArrayList<ChatMessage> freshMessages = new ArrayList<>(); for(Message message:messages){ boolean mine = ConnectionProvider.getInstance(AndroidFriendlyFeature.class).whoAmI().equals(message.senderEmail); freshMessages.add(new ChatMessage(!mine, message.text)); } chatMessageList = freshMessages; } public ChatArrayAdapter(Context context, int textViewResourceId) { super(context, textViewResourceId); } public int getCount() { return this.chatMessageList.size(); } public ChatMessage getItem(int index) { return this.chatMessageList.get(index); } public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; if (row == null) { LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); row = inflater.inflate(R.layout.activity_chat_singlemessage, parent, false); } singleMessageContainer = (LinearLayout) row.findViewById(R.id.singleMessageContainer); ChatMessage chatMessageObj = getItem(position); chatText = (EmojiconTextView) row.findViewById(R.id.singleMessage); chatText.setText(chatMessageObj.message); chatText.setBackgroundResource(chatMessageObj.left ? R.drawable.bubble_s_a : R.drawable.bubble_w_a); chatText.setTextColor(chatMessageObj.left ? Color.WHITE : Color.BLACK); singleMessageContainer.setGravity(chatMessageObj.left ? Gravity.LEFT : Gravity.RIGHT); return row; } public Bitmap decodeToBitmap(byte[] decodedByte) { return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length); } }