Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.seesharp.app.iuvo.carehub4u.MyNote.Adapter;
- import android.content.Context;
- import android.content.Intent;
- import android.support.v7.widget.RecyclerView;
- import android.text.TextUtils;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import com.seesharp.app.iuvo.carehub4u.Login.Model.Login;
- import com.seesharp.app.iuvo.carehub4u.MyNote.Adapter.ViewHolder.ChatTextImageViewHolder;
- import com.seesharp.app.iuvo.carehub4u.MyNote.Adapter.ViewHolder.ChatTextViewHolder;
- import com.seesharp.app.iuvo.carehub4u.MyNote.Adapter.ViewHolder.DateViewHolder;
- import com.seesharp.app.iuvo.carehub4u.MyNote.Model.DateItem;
- import com.seesharp.app.iuvo.carehub4u.MyNote.Model.GeneralItem;
- import com.seesharp.app.iuvo.carehub4u.MyNote.Model.ListItem;
- import com.seesharp.app.iuvo.carehub4u.MyNote.Model.Message;
- import com.seesharp.app.iuvo.carehub4u.R;
- import com.seesharp.app.iuvo.carehub4u.Utils.Constant;
- import com.seesharp.app.iuvo.carehub4u.ZoomableImageViewActivity;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- /**
- * Created by Developer on 24/08/2017.
- */
- public class NoteMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
- private Context context;
- private ArrayList<ListItem> messages = new ArrayList<>();
- private Login login;
- private OnRequestDownloadUrlListener onRequestDownloadUrlListener;
- public NoteMessageAdapter(Context context, Login login, OnRequestDownloadUrlListener onRequestDownloadUrlListener) {
- this.context = context;
- this.login = login;
- this.onRequestDownloadUrlListener = onRequestDownloadUrlListener;
- }
- @Override
- public int getItemViewType(int position) {
- if(messages.get(position).getType() == ListItem.TYPE_GENERAL){
- GeneralItem generalItem = (GeneralItem) messages.get(position);
- Message m = generalItem.getMessage();
- if(login.getUserId().equals(m.getUserId())) {
- if(!TextUtils.isEmpty(m.getContentType()))
- return ListItem.TYPE_RIGHT_IMAGE;
- else
- return ListItem.TYPE_RIGHT_NORMAL;
- }
- else{
- if(!TextUtils.isEmpty(m.getContentType()))
- return ListItem.TYPE_LEFT_IMAGE;
- else
- return ListItem.TYPE_LEFT_NORMAL;
- }
- }
- else
- return ListItem.TYPE_DATE;
- // Message m = messages.get(position);
- // if(login.getUserId().equals(m.getUserId())) {
- // if(!TextUtils.isEmpty(m.getContentType()))
- // return 2;
- // else
- // return 1;
- // }
- // else
- // return 0;
- }
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- final RecyclerView.ViewHolder chatTextViewHolder;
- switch (viewType){
- case ListItem.TYPE_DATE:{
- View v = LayoutInflater.from(context).inflate(R.layout.chat_date_item_layout, parent, false);
- return new DateViewHolder(v);
- }
- case ListItem.TYPE_RIGHT_NORMAL:{
- View v = LayoutInflater.from(context).inflate(R.layout.chat_item_layout_right, parent, false);
- return new ChatTextViewHolder(v);
- }
- case ListItem.TYPE_RIGHT_IMAGE: {
- View v = LayoutInflater.from(context).inflate(R.layout.chat_item_layout_right_full_image, parent, false);
- chatTextViewHolder = new ChatTextImageViewHolder(v);
- ((ChatTextImageViewHolder) chatTextViewHolder).chatView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- GeneralItem generalItem = (GeneralItem) messages.get(chatTextViewHolder.getAdapterPosition());
- Message m = generalItem.getMessage();
- if (!TextUtils.isEmpty(m.getContentType())) {
- if (!TextUtils.isEmpty(m.getFilePath())) {
- Intent intent = new Intent(context, ZoomableImageViewActivity.class);
- intent.putExtra(ZoomableImageViewActivity.IMAGE_URL, m.getFilePath());
- context.startActivity(intent);
- } else {
- if (null != onRequestDownloadUrlListener)
- onRequestDownloadUrlListener.onDownloadRequest(chatTextViewHolder.getAdapterPosition(), m.getGuid());
- }
- }
- }
- });
- return chatTextViewHolder;
- }
- case ListItem.TYPE_LEFT_NORMAL:{
- View v = LayoutInflater.from(context).inflate(R.layout.chat_item_layout_left, parent, false);
- chatTextViewHolder = new ChatTextViewHolder(v);
- return chatTextViewHolder;
- }
- case ListItem.TYPE_LEFT_IMAGE:{
- View v = LayoutInflater.from(context).inflate(R.layout.chat_item_layout_left_full_image, parent, false);
- chatTextViewHolder = new ChatTextImageViewHolder(v);
- ((ChatTextImageViewHolder) chatTextViewHolder).chatView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- GeneralItem generalItem = (GeneralItem) messages.get(chatTextViewHolder.getAdapterPosition());
- Message m = generalItem.getMessage();
- if (!TextUtils.isEmpty(m.getContentType())) {
- if (!TextUtils.isEmpty(m.getFilePath())) {
- Intent intent = new Intent(context, ZoomableImageViewActivity.class);
- intent.putExtra(ZoomableImageViewActivity.IMAGE_URL, m.getFilePath());
- context.startActivity(intent);
- } else {
- if (null != onRequestDownloadUrlListener)
- onRequestDownloadUrlListener.onDownloadRequest(chatTextViewHolder.getAdapterPosition(), m.getGuid());
- }
- }
- }
- });
- return chatTextViewHolder;
- }
- default:{
- View v = LayoutInflater.from(context).inflate(R.layout.chat_item_layout_left, parent, false);
- return new ChatTextViewHolder(v);
- }
- }
- }
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- switch (holder.getItemViewType()) {
- case ListItem.TYPE_DATE:
- DateItem dateItem = (DateItem) messages.get(position);
- ((DateViewHolder)holder).bind(dateItem);
- break;
- case ListItem.TYPE_RIGHT_NORMAL:{
- GeneralItem generalItem = (GeneralItem) messages.get(position);
- Message m = generalItem.getMessage();
- ((ChatTextViewHolder)holder).bind(m);
- }
- break;
- case ListItem.TYPE_RIGHT_IMAGE: {
- GeneralItem generalItem = (GeneralItem) messages.get(position);
- Message m = generalItem.getMessage();
- ((ChatTextImageViewHolder)holder).bind(m);
- }
- break;
- case ListItem.TYPE_LEFT_IMAGE:{
- GeneralItem generalItem = (GeneralItem) messages.get(position);
- Message m = generalItem.getMessage();
- ((ChatTextViewHolder)holder).bind(m);
- }
- break;
- case ListItem.TYPE_LEFT_NORMAL:{
- GeneralItem generalItem = (GeneralItem) messages.get(position);
- Message m = generalItem.getMessage();
- ((ChatTextViewHolder)holder).bind(m);
- }
- break;
- }
- }
- @Override
- public int getItemCount() {
- return messages != null ? messages.size() : 0;
- }
- public void updateMessage(ArrayList<Message> messages){
- HashMap<String, ArrayList<Message>> groupedHashMap = groupDataIntoHashMap(messages);
- for (String date : groupedHashMap.keySet()) {
- for (Message message : groupedHashMap.get(date)) {
- GeneralItem generalItem = new GeneralItem();
- generalItem.setMessage(message);
- this.messages.add(generalItem);
- }
- DateItem dateItem = new DateItem();
- dateItem.setDate(date);
- this.messages.add(dateItem);
- }
- for(ListItem listItem: this.messages){
- if(listItem instanceof GeneralItem){
- }
- else{
- }
- }
- notifyDataSetChanged();
- // if(null != messages){
- // this.messages.addAll(messages);
- // Collections.sort(this.messages, Collections.reverseOrder());
- // //check date here
- // for(int i = 0; i < this.messages.size(); i++){
- //
- // File[] files = Utils.isFileExist(this.messages.get(i).getGuid());
- // if(null != files)
- // this.messages.get(i).setFilePath(files[0].getAbsolutePath());
- //
- // if(i == 0){
- // this.messages.get(i).setShowDate(true);
- // }
- // else {
- // Message m1 = this.messages.get(i);
- // Message m2 = this.messages.get(i - 1);
- // DateTime dt1 = new DateTime((Long.parseLong(m1.getCreatedDateTime()) - Constant.TICKS_AT_EPOCH) / Constant.TICKS_PER_MILLISECOND, DateTimeZone.forTimeZone(TimeZone.getDefault()));
- // DateTime dt2 = new DateTime((Long.parseLong(m2.getCreatedDateTime()) - Constant.TICKS_AT_EPOCH) / Constant.TICKS_PER_MILLISECOND, DateTimeZone.forTimeZone(TimeZone.getDefault()));
- // if(dt1.toLocalDate().isBefore(dt2.toLocalDate())){
- // this.messages.get(i).setShowDate(true);
- // }
- // else if(dt1.toLocalDate().isEqual(dt2.toLocalDate())){
- // this.messages.get(i).setShowDate(false);
- // }
- // else if(dt1.toLocalDate().isAfter(dt2.toLocalDate())){
- // this.messages.get(i).setShowDate(true);
- // }
- // }
- // }
- //
- // notifyDataSetChanged();
- // }
- }
- public void validateFile(int position, String filePath){
- //this.messages.get(position).setFilePath(filePath);
- GeneralItem generalItem = (GeneralItem) messages.get(position);
- generalItem.getMessage().setFilePath(filePath);
- notifyItemChanged(position);
- }
- public interface OnRequestDownloadUrlListener{
- void onDownloadRequest(int position, String guid);
- }
- private HashMap<String, ArrayList<Message>> groupDataIntoHashMap(ArrayList<Message> messages) {
- HashMap<String, ArrayList<Message>> groupedHashMap = new HashMap<>();
- for(Message message : messages) {
- String hashMapKey = Constant.convertLongDateToString(Long.parseLong(message.getCreatedDateTime()));
- Log.i("HashMap", hashMapKey+","+message.getContentType()+","+message.getMessage()+","+message.getUserName());
- if(groupedHashMap.containsKey(hashMapKey)) {
- // The key is already in the HashMap; add the pojo object
- // against the existing key.
- groupedHashMap.get(hashMapKey).add(message);
- } else {
- // The key is not there in the HashMap; create a new key-value pair
- groupedHashMap.put(hashMapKey, new ArrayList<Message>());
- }
- }
- return sortByComparator(groupedHashMap, false);
- }
- private static HashMap<String, ArrayList<Message>> sortByComparator(HashMap<String, ArrayList<Message>> unsortMap, final boolean order) {
- List<Map.Entry<String, ArrayList<Message>>> list = new LinkedList<Map.Entry<String, ArrayList<Message>>>(unsortMap.entrySet());
- // Sorting the list based on values
- Collections.sort(list, new Comparator<Map.Entry<String, ArrayList<Message>>>() {
- public int compare(Map.Entry<String, ArrayList<Message>> o1,
- Map.Entry<String, ArrayList<Message>> o2) {
- if (order)
- return o1.getKey().compareTo(o2.getKey());
- else
- return o2.getKey().compareTo(o1.getKey());
- }
- });
- // Maintaining insertion order with the help of LinkedList
- HashMap<String, ArrayList<Message>> sortedMap = new LinkedHashMap<String, ArrayList<Message>>();
- for (Map.Entry<String, ArrayList<Message>> entry : list) {
- sortedMap.put(entry.getKey(), entry.getValue());
- }
- return sortedMap;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement