Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MessageAdapter1 extends RecyclerView.Adapter<MessageAdapter1.ViewHolder> {
- private List<MessageList> mMessages;
- private int[] mUsernameColors;
- private Context context;
- public MessageAdapter1(Context context, List<MessageList> messages) {
- mMessages = messages;
- this.context = context;
- }
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- int layout = -1;
- int type = -1;
- if(mMessages.get(viewType).getDir().equals("left")) type = 1;
- else if(mMessages.get(viewType).getDir().equals("right")) type = 0;
- else if(mMessages.get(viewType).getDir().equals("typing")) type = 2;
- switch (type) {
- case MessageList.TYPE_MESSAGE_RIGHT:
- layout = R.layout.right_message;
- break;
- case MessageList.TYPE_MESSAGE_LEFT:
- layout = R.layout.left_message;
- break;
- case MessageList.TYPE_ACTION:
- layout = R.layout.message_left;
- break;
- }
- View v = LayoutInflater.from(parent.getContext()).inflate(layout, parent, false);
- return new ViewHolder(v);
- }
- @Override
- public void onBindViewHolder(ViewHolder viewHolder, int position) {
- MessageList message = mMessages.get(position);
- viewHolder.setGroupMessage(message);
- }
- @Override
- public int getItemCount() {
- return mMessages.size();
- }
- @Override
- public int getItemViewType(int position) {
- return position;
- }
- public class ViewHolder extends RecyclerView.ViewHolder {
- private LinearLayout groupMessage;
- public ViewHolder(View itemView) {
- super(itemView);
- groupMessage = (LinearLayout)itemView.findViewById(R.id.messages);
- }
- public void setGroupMessage(MessageList m) {
- if (null == groupMessage) return;
- int i = 0;
- if(m.getMessageStatus() == false){
- m.setMessageStatus(true);
- for (String message : m.getMessageList()) {
- //TextView text = new TextView(activity);
- TextView text = new MyTextView(context);
- LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- p.setMargins(0, 0, 0, 2);
- if (m.getDir().equals("left")) {
- text.setTextColor(Color.BLACK);
- p.gravity = Gravity.LEFT;
- if(m.getMessageList().size() == 1){
- text.setBackgroundResource(R.drawable.message_left_default);
- }
- else if (i == 0) {
- text.setBackgroundResource(R.drawable.message_left_first);
- } else if (i + 1 == m.getMessageList().size()) {
- text.setBackgroundResource(R.drawable.message_left_last);
- } else {
- text.setBackgroundResource(R.drawable.message_left);
- }
- } else{
- p.gravity = Gravity.RIGHT;
- text.setTextColor(Color.WHITE);
- if(m.getMessageList().size() == 1){
- text.setBackgroundResource(R.drawable.message_right_default);
- }
- else if (i == 0) {
- text.setBackgroundResource(R.drawable.message_right_first);
- } else if (i + 1 == m.getMessageList().size()) {
- text.setBackgroundResource(R.drawable.message_right_last);
- } else {
- text.setBackgroundResource(R.drawable.message_right);
- }
- }
- text.setLayoutParams(p);
- text.setText(message);
- text.setPadding(8, 8, 8, 8);
- text.setTextSize(18f);
- //text.setTextAppearance(context, android.R.style.TextAppearance_Large);
- groupMessage.addView(text);
- i++;
- }
- }
- }
- }
- }
- public RecyclerView.Adapter mAdapter;
- public RecyclerView mMessagesView;
- public List<MessageList> Message_List = new ArrayList<MessageList>();
- mAdapter = new MessageAdapter1(getApplicationContext(), Message_List);
- mMessagesView = (RecyclerView) findViewById(R.id.messages);
- mMessagesView.setLayoutManager(new LinearLayoutManager(this));
- mMessagesView.setAdapter(mAdapter);
- Message_List.add(data);
- mAdapter.notifyItemInserted(Message_List.size() - 1);
- Message_List.clear();
- mAdapter.notifyDataSetChanged();
- Message_List.add(some data new); // message i am new data (first)
- mAdapter.notifyItemInserted(Message_List.size() - 1);
- Message_List.add(some data new); // message i am new data (second)
- mAdapter.notifyItemInserted(Message_List.size() - 1);
- mAdapter.remove(position);
- mAdapter.notifyDataSetChanged();
- public void refreshMessages(List<Message_List> messages) {
- this.mMessages = messages;
- notifyItemRangeChanged(0, mMessages.size());
- }
- public void removeAll() {
- cardItems.clear(); //clear list
- notifyDataSetChanged();
- }
- private void initRecycleView() {
- recyclerView.setHasFixedSize(true);
- // linear layout manager
- layoutManager = new LinearLayoutManager(this);
- recyclerView.setLayoutManager(layoutManagerTag);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement