Mercury-IM/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter...

78 lines
2.2 KiB
Java
Raw Normal View History

2019-09-01 04:56:23 +02:00
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;
2019-09-01 04:56:23 +02:00
public class ChatListRecyclerViewAdapter
2019-09-10 18:24:47 +02:00
extends AbstractRecyclerViewAdapter<Chat, ChatListRecyclerViewAdapter.ChatHolder> {
2019-09-01 04:56:23 +02:00
public ChatListRecyclerViewAdapter() {
2019-09-02 01:06:17 +02:00
super(new ChatMessageDiffCallback(true));
2019-09-01 04:56:23 +02:00
}
@NonNull
@Override
2019-09-02 01:06:17 +02:00
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);
2019-09-01 04:56:23 +02:00
}
@Override
2019-09-02 01:06:17 +02:00
public void onBindViewHolder(@NonNull ChatHolder holder, int position) {
2019-09-10 18:24:47 +02:00
Chat model = getModelAt(position);
holder.nameView.setText(model.jid.toString());
2019-09-02 01:06:17 +02:00
// TODO: Better bindable model pls
2019-09-01 04:56:23 +02:00
}
2019-09-02 01:06:17 +02:00
public static class ChatHolder extends RecyclerView.ViewHolder {
2019-09-01 04:56:23 +02:00
@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;
2019-09-02 01:06:17 +02:00
public ChatHolder(@NonNull View itemView) {
2019-09-01 04:56:23 +02:00
super(itemView);
2019-09-02 01:06:17 +02:00
ButterKnife.bind(this, itemView);
}
}
2019-09-10 18:24:47 +02:00
private static class ChatMessageDiffCallback extends AbstractDiffCallback<Chat> {
2019-09-02 01:06:17 +02:00
ChatMessageDiffCallback(boolean detectMoves) {
2019-09-02 01:06:17 +02:00
super(detectMoves);
}
@Override
2019-09-10 18:24:47 +02:00
public boolean areItemsTheSame(Chat oldItem, Chat newItem) {
return oldItem.chatId == newItem.chatId;
2019-09-01 04:56:23 +02:00
}
2019-09-02 01:06:17 +02:00
@Override
2019-09-10 18:24:47 +02:00
public boolean areContentsTheSame(Chat oldItem, Chat newItem) {
2019-09-02 01:06:17 +02:00
return areItemsTheSame(oldItem, newItem);
2019-09-01 04:56:23 +02:00
}
}
}