aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java89
1 files changed, 84 insertions, 5 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java
index 18741e02..2ce0386d 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java
+++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java
@@ -25,13 +25,92 @@
package net.lacolaco.smileessence.view.adapter;
import android.app.Activity;
-import net.lacolaco.smileessence.viewmodel.EventViewModel;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+import com.android.volley.toolbox.NetworkImageView;
+import net.lacolaco.smileessence.R;
+import net.lacolaco.smileessence.World;
+import net.lacolaco.smileessence.data.ImageCache;
+import net.lacolaco.smileessence.entity.Event;
+import net.lacolaco.smileessence.entity.RBinding;
+import net.lacolaco.smileessence.preference.UserPreferenceHelper;
+import net.lacolaco.smileessence.util.StringUtils;
+import net.lacolaco.smileessence.util.UIObserverBundle;
+import net.lacolaco.smileessence.view.DialogHelper;
+import net.lacolaco.smileessence.view.dialog.UserDetailDialogFragment;
+import net.lacolaco.smileessence.view.listener.ListItemClickListener;
-public class EventListAdapter extends UnorderedCustomListAdapter<EventViewModel> {
+import java.lang.ref.WeakReference;
+import java.util.List;
- // --------------------------- CONSTRUCTORS ---------------------------
+public class EventListAdapter extends CustomListAdapter<Event> {
+ private final World world;
+ private final Activity activity;
- public EventListAdapter(Activity activity) {
- super(activity);
+ public EventListAdapter(World world, Activity activity) {
+ super();
+ this.world = world;
+ this.activity = activity;
+ }
+
+ @Override
+ protected List<Event> getList() {
+ return world.getEvents();
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ Event event = getItem(position);
+ if (convertView == null) {
+ convertView = activity.getLayoutInflater().inflate(R.layout.list_item_status, null);
+ }
+ UIObserverBundle bundle = (UIObserverBundle) convertView.getTag();
+ if (bundle != null) {
+ bundle.detachAll();
+ } else {
+ bundle = new UIObserverBundle();
+ convertView.setTag(bundle);
+ }
+
+ int textSize = UserPreferenceHelper.getInstance().getTextSize();
+
+ TextView header = (TextView) convertView.findViewById(R.id.textview_status_header);
+ header.setTextSize(textSize);
+
+ updateViewUser(event, convertView);
+
+ TextView content = (TextView) convertView.findViewById(R.id.textview_status_text);
+ content.setTextSize(textSize);
+ content.setText(event.getTargetObject() != null ? event.getTargetObject().getText() : "");
+ TextView footer = (TextView) convertView.findViewById(R.id.textview_status_footer);
+ footer.setTextSize(textSize - 2);
+ footer.setText(StringUtils.dateToString(event.getCreatedAt()));
+ ImageView favorited = (ImageView) convertView.findViewById(R.id.imageview_status_favorited);
+ favorited.setVisibility(View.GONE);
+ convertView.setOnClickListener(new ListItemClickListener(activity, () -> {
+ UserDetailDialogFragment fragment = new UserDetailDialogFragment();
+ fragment.setUserID(event.getSource().getId());
+ DialogHelper.showDialog(activity, fragment);
+ }));
+
+ final WeakReference<View> weakView = new WeakReference<>(convertView);
+ bundle.attach(event.getSource(), changes -> {
+ View strongView = weakView.get();
+ if (strongView != null && changes.contains(RBinding.BASIC))
+ updateViewUser(event, strongView);
+ });
+
+ return convertView;
+ }
+
+ private void updateViewUser(Event event, View convertedView) {
+ NetworkImageView icon = (NetworkImageView) convertedView.findViewById(R.id.imageview_status_icon);
+ String iconUrl = event.getSource().getProfileImageUrlOriginal();
+ ImageCache.getInstance().setImageToView(iconUrl, icon);
+
+ TextView header = (TextView) convertedView.findViewById(R.id.textview_status_header);
+ header.setText(event.getFormattedString());
}
}