scroll to newest message
This commit is contained in:
parent
0f38ad6e5c
commit
87a3d34315
@ -103,7 +103,6 @@ public class SCNApp extends Application implements LifecycleObserver
|
|||||||
==TODO==
|
==TODO==
|
||||||
|
|
||||||
[ ] - Delete single message (swipe right)
|
[ ] - Delete single message (swipe right)
|
||||||
[ ] - scroll to newest message (armin says it doesnt)
|
|
||||||
[ ] - Android O repeat sound
|
[ ] - Android O repeat sound
|
||||||
[ ] - Query non-ack-ed messages in app
|
[ ] - Query non-ack-ed messages in app
|
||||||
[ ] - notifications: how does WA do it??? - there you can change shit in-app
|
[ ] - notifications: how does WA do it??? - there you can change shit in-app
|
||||||
|
@ -73,6 +73,7 @@ public class CMessageList
|
|||||||
MessageAdapter a = ref.get();
|
MessageAdapter a = ref.get();
|
||||||
if (a == null) continue;
|
if (a == null) continue;
|
||||||
a.customNotifyItemInserted(count);
|
a.customNotifyItemInserted(count);
|
||||||
|
a.scrollToTop();
|
||||||
}
|
}
|
||||||
CleanUpListener();
|
CleanUpListener();
|
||||||
});
|
});
|
||||||
@ -127,6 +128,11 @@ public class CMessageList
|
|||||||
return Messages.get(pos);
|
return Messages.get(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CMessage tryGetFromBack(int pos)
|
||||||
|
{
|
||||||
|
return tryGet(Messages.size() - pos - 1);
|
||||||
|
}
|
||||||
|
|
||||||
public int size()
|
public int size()
|
||||||
{
|
{
|
||||||
return Messages.size();
|
return Messages.size();
|
||||||
|
@ -11,15 +11,20 @@ import com.blackforestbytes.simplecloudnotifier.model.CMessage;
|
|||||||
import com.blackforestbytes.simplecloudnotifier.model.CMessageList;
|
import com.blackforestbytes.simplecloudnotifier.model.CMessageList;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
public class MessageAdapter extends RecyclerView.Adapter
|
public class MessageAdapter extends RecyclerView.Adapter
|
||||||
{
|
{
|
||||||
private final View vNoElements;
|
private final View vNoElements;
|
||||||
|
private final LinearLayoutManager manLayout;
|
||||||
|
private final RecyclerView viewRecycler;
|
||||||
|
|
||||||
public MessageAdapter(View noElementsView)
|
public MessageAdapter(View noElementsView, LinearLayoutManager layout, RecyclerView recycler)
|
||||||
{
|
{
|
||||||
vNoElements = noElementsView;
|
vNoElements = noElementsView;
|
||||||
|
manLayout = layout;
|
||||||
|
viewRecycler = recycler;
|
||||||
CMessageList.inst().register(this);
|
CMessageList.inst().register(this);
|
||||||
|
|
||||||
vNoElements.setVisibility(getItemCount()>0 ? View.GONE : View.VISIBLE);
|
vNoElements.setVisibility(getItemCount()>0 ? View.GONE : View.VISIBLE);
|
||||||
@ -36,7 +41,7 @@ public class MessageAdapter extends RecyclerView.Adapter
|
|||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position)
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position)
|
||||||
{
|
{
|
||||||
CMessage msg = CMessageList.inst().tryGet(position);
|
CMessage msg = CMessageList.inst().tryGetFromBack(position);
|
||||||
MessagePresenter view = (MessagePresenter) holder;
|
MessagePresenter view = (MessagePresenter) holder;
|
||||||
view.setMessage(msg);
|
view.setMessage(msg);
|
||||||
}
|
}
|
||||||
@ -59,6 +64,11 @@ public class MessageAdapter extends RecyclerView.Adapter
|
|||||||
vNoElements.setVisibility(getItemCount()>0 ? View.GONE : View.VISIBLE);
|
vNoElements.setVisibility(getItemCount()>0 ? View.GONE : View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void scrollToTop()
|
||||||
|
{
|
||||||
|
manLayout.smoothScrollToPosition(viewRecycler, null, 0);
|
||||||
|
}
|
||||||
|
|
||||||
private class MessagePresenter extends RecyclerView.ViewHolder implements View.OnClickListener
|
private class MessagePresenter extends RecyclerView.ViewHolder implements View.OnClickListener
|
||||||
{
|
{
|
||||||
private TextView tvTimestamp;
|
private TextView tvTimestamp;
|
||||||
|
@ -31,8 +31,10 @@ public class NotificationsFragment extends Fragment
|
|||||||
View v = inflater.inflate(R.layout.fragment_notifications, container, false);
|
View v = inflater.inflate(R.layout.fragment_notifications, container, false);
|
||||||
|
|
||||||
RecyclerView rvMessages = v.findViewById(R.id.rvMessages);
|
RecyclerView rvMessages = v.findViewById(R.id.rvMessages);
|
||||||
rvMessages.setLayoutManager(new LinearLayoutManager(this.getContext(), RecyclerView.VERTICAL, true));
|
LinearLayoutManager lman = new LinearLayoutManager(this.getContext(), RecyclerView.VERTICAL, false);
|
||||||
rvMessages.setAdapter(new MessageAdapter(v.findViewById(R.id.tvNoElements)));
|
rvMessages.setLayoutManager(lman);
|
||||||
|
rvMessages.setAdapter(new MessageAdapter(v.findViewById(R.id.tvNoElements), lman, rvMessages));
|
||||||
|
//lman.scrollToPosition(0);
|
||||||
|
|
||||||
adView = v.findViewById(R.id.adBanner);
|
adView = v.findViewById(R.id.adBanner);
|
||||||
PublisherAdRequest adRequest = new PublisherAdRequest.Builder().build();
|
PublisherAdRequest adRequest = new PublisherAdRequest.Builder().build();
|
||||||
|
Loading…
Reference in New Issue
Block a user