package org.mercury_im.messenger.ui.chatlist; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; import de.hdodenhof.circleimageview.CircleImageView; import org.mercury_im.messenger.R; import org.mercury_im.messenger.persistence.pojo.Chat; import org.mercury_im.messenger.ui.util.AbstractRecyclerViewAdapter; public class ChatListRecyclerViewAdapter extends AbstractRecyclerViewAdapter { public ChatListRecyclerViewAdapter() { super(new ChatMessageDiffCallback(true)); } @NonNull @Override public ChatHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.recycler_view_item_chat_list, parent, false); return new ChatHolder(view); } @Override public void onBindViewHolder(@NonNull ChatHolder holder, int position) { Chat model = getModelAt(position); holder.nameView.setText(model.jid.toString()); // TODO: Better bindable model pls } public static class ChatHolder extends RecyclerView.ViewHolder { @BindView(R.id.chat_name) TextView nameView; @BindView(R.id.chat_message) TextView chatMessage; @BindView(R.id.chat_time) TextView chatTime; @BindView(R.id.chat_avatar) CircleImageView avatarView; public ChatHolder(@NonNull View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } private static class ChatMessageDiffCallback extends AbstractDiffCallback { ChatMessageDiffCallback(boolean detectMoves) { super(detectMoves); } @Override public boolean areItemsTheSame(Chat oldItem, Chat newItem) { return oldItem.chatId == newItem.chatId; } @Override public boolean areContentsTheSame(Chat oldItem, Chat newItem) { return areItemsTheSame(oldItem, newItem); } } }