mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Construct recyler list logic according to Renderers library of pedrovgs
This commit is contained in:
parent
ddf978f8ca
commit
76ee338a20
3 changed files with 149 additions and 0 deletions
|
|
@ -0,0 +1,50 @@
|
||||||
|
package fr.free.nrw.commons.notification;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
|
import butterknife.Optional;
|
||||||
|
import fr.free.nrw.commons.R;
|
||||||
|
import fr.free.nrw.commons.theme.NavigationBaseActivity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by root on 18.12.2017.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class NotificationActivity extends NavigationBaseActivity {
|
||||||
|
NotificationAdapterFactory notificationAdapterFactory;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@BindView(R.id.listView) RecyclerView recyclerView;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_notification);
|
||||||
|
ButterKnife.bind(this);
|
||||||
|
initListView();
|
||||||
|
addNotifications();
|
||||||
|
initDrawer();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initListView() {
|
||||||
|
recyclerView = findViewById(R.id.listView);
|
||||||
|
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||||
|
notificationAdapterFactory = new NotificationAdapterFactory(new NotificationRenderer.NotificationClicked() {
|
||||||
|
@Override
|
||||||
|
public void notificationClicked(Notification notification) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addNotifications() {
|
||||||
|
|
||||||
|
recyclerView.setAdapter(notificationAdapterFactory.create(NotificationController.loadNotifications()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package fr.free.nrw.commons.notification;
|
||||||
|
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
|
||||||
|
import com.pedrogomez.renderers.ListAdapteeCollection;
|
||||||
|
import com.pedrogomez.renderers.RVRendererAdapter;
|
||||||
|
import com.pedrogomez.renderers.RendererBuilder;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by root on 19.12.2017.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class NotificationAdapterFactory {
|
||||||
|
private NotificationRenderer.NotificationClicked listener;
|
||||||
|
|
||||||
|
NotificationAdapterFactory(@NonNull NotificationRenderer.NotificationClicked listener) {
|
||||||
|
this.listener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RVRendererAdapter<Notification> create(List<Notification> notifications) {
|
||||||
|
RendererBuilder<Notification> builder = new RendererBuilder<Notification>()
|
||||||
|
.bind(Notification.class, new NotificationRenderer(listener));
|
||||||
|
ListAdapteeCollection<Notification> collection = new ListAdapteeCollection<>(
|
||||||
|
notifications != null ? notifications : Collections.<Notification>emptyList());
|
||||||
|
return new RVRendererAdapter<>(builder, collection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
package fr.free.nrw.commons.notification;
|
||||||
|
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.pedrogomez.renderers.Renderer;
|
||||||
|
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
|
import fr.free.nrw.commons.R;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by root on 19.12.2017.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class NotificationRenderer extends Renderer<Notification> {
|
||||||
|
@BindView(R.id.tvName)
|
||||||
|
TextView tvName;
|
||||||
|
@BindView(R.id.tvDesc) TextView tvDesc;
|
||||||
|
@BindView(R.id.distance) TextView distance;
|
||||||
|
@BindView(R.id.icon)
|
||||||
|
ImageView icon;
|
||||||
|
private NotificationClicked listener;
|
||||||
|
|
||||||
|
|
||||||
|
NotificationRenderer(NotificationClicked listener) {
|
||||||
|
this.listener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setUpView(View view) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void hookListeners(View rootView) {
|
||||||
|
rootView.setOnClickListener(v -> listener.notificationClicked(getContent()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected View inflate(LayoutInflater layoutInflater, ViewGroup viewGroup) {
|
||||||
|
View inflatedView = layoutInflater.inflate(R.layout.item_notification, viewGroup, false);
|
||||||
|
ButterKnife.bind(this, inflatedView);
|
||||||
|
return inflatedView;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render() {
|
||||||
|
Notification notification = getContent();
|
||||||
|
tvName.setText(notification.notificationText);
|
||||||
|
switch (notification.notificationType) {
|
||||||
|
case edit:
|
||||||
|
icon.setImageResource(R.drawable.round_icon_unknown);
|
||||||
|
case message:
|
||||||
|
icon.setImageResource(R.drawable.round_icon_unknown);
|
||||||
|
case mention:
|
||||||
|
icon.setImageResource(R.drawable.round_icon_unknown);
|
||||||
|
case block:
|
||||||
|
icon.setImageResource(R.drawable.round_icon_unknown);
|
||||||
|
default:
|
||||||
|
icon.setImageResource(R.drawable.round_icon_unknown);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface NotificationClicked{
|
||||||
|
void notificationClicked(Notification notification);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue