112 lines
3.3 KiB
Java
112 lines
3.3 KiB
Java
package com.blackforestbytes.simplecloudnotifier.view;
|
|
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ImageView;
|
|
import android.widget.TextView;
|
|
|
|
import com.blackforestbytes.simplecloudnotifier.R;
|
|
import com.blackforestbytes.simplecloudnotifier.model.CMessage;
|
|
import com.blackforestbytes.simplecloudnotifier.model.CMessageList;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
public class MessageAdapter extends RecyclerView.Adapter
|
|
{
|
|
private final View vNoElements;
|
|
|
|
public MessageAdapter(View noElementsView)
|
|
{
|
|
vNoElements = noElementsView;
|
|
CMessageList.inst().register(this);
|
|
|
|
vNoElements.setVisibility(getItemCount()>0 ? View.GONE : View.VISIBLE);
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
|
|
{
|
|
View myView = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_card, parent, false);
|
|
return new MessagePresenter(myView);
|
|
}
|
|
|
|
@Override
|
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position)
|
|
{
|
|
CMessage msg = CMessageList.inst().tryGet(position);
|
|
MessagePresenter view = (MessagePresenter) holder;
|
|
view.setMessage(msg);
|
|
}
|
|
|
|
@Override
|
|
public int getItemCount()
|
|
{
|
|
return CMessageList.inst().size();
|
|
}
|
|
|
|
public void customNotifyItemInserted(int idx)
|
|
{
|
|
notifyItemInserted(idx);
|
|
vNoElements.setVisibility(getItemCount()>0 ? View.GONE : View.VISIBLE);
|
|
}
|
|
|
|
public void customNotifyDataSetChanged()
|
|
{
|
|
notifyDataSetChanged();
|
|
vNoElements.setVisibility(getItemCount()>0 ? View.GONE : View.VISIBLE);
|
|
}
|
|
|
|
private class MessagePresenter extends RecyclerView.ViewHolder implements View.OnClickListener
|
|
{
|
|
private TextView tvTimestamp;
|
|
private TextView tvTitle;
|
|
private TextView tvMessage;
|
|
private ImageView ivPriority;
|
|
|
|
private CMessage data;
|
|
|
|
MessagePresenter(View itemView)
|
|
{
|
|
super(itemView);
|
|
tvTimestamp = itemView.findViewById(R.id.tvTimestamp);
|
|
tvTitle = itemView.findViewById(R.id.tvTitle);
|
|
tvMessage = itemView.findViewById(R.id.tvMessage);
|
|
ivPriority = itemView.findViewById(R.id.ivPriority);
|
|
itemView.setOnClickListener(this);
|
|
}
|
|
|
|
void setMessage(CMessage msg)
|
|
{
|
|
tvTimestamp.setText(msg.formatTimestamp());
|
|
tvTitle.setText(msg.Title);
|
|
tvMessage.setText(msg.Content);
|
|
|
|
switch (msg.Priority)
|
|
{
|
|
case LOW:
|
|
ivPriority.setVisibility(View.VISIBLE);
|
|
ivPriority.setImageResource(R.drawable.priority_low);
|
|
break;
|
|
case NORMAL:
|
|
ivPriority.setVisibility(View.GONE);
|
|
break;
|
|
case HIGH:
|
|
ivPriority.setVisibility(View.VISIBLE);
|
|
ivPriority.setImageResource(R.drawable.priority_high);
|
|
break;
|
|
}
|
|
|
|
data = msg;
|
|
}
|
|
|
|
@Override
|
|
public void onClick(View v)
|
|
{
|
|
//SCNApp.showToast(data.Title, Toast.LENGTH_LONG);
|
|
}
|
|
}
|
|
}
|