Prechádzať zdrojové kódy

Header was added in ActivitiesView
RichSubject was Added

alejandro 8 rokov pred
rodič
commit
fba1d38100

+ 1 - 1
build.gradle

@@ -13,7 +13,7 @@ buildscript {
         }
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.1'
+        classpath 'com.android.tools.build:gradle:2.3.2'
         classpath 'com.google.gms:google-services:3.0.0'
     }
 }

+ 1 - 1
src/main/java/com/owncloud/android/ui/activity/ActivitiesListActivity.java

@@ -167,7 +167,7 @@ public class ActivitiesListActivity extends FileActivity {
                 layoutManager.getOrientation());
 
         recyclerView.setLayoutManager(layoutManager);
-        recyclerView.addItemDecoration(dividerItemDecoration);
+        //recyclerView.addItemDecoration(dividerItemDecoration);
 
         BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_view);
 

+ 97 - 30
src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java

@@ -22,8 +22,10 @@ package com.owncloud.android.ui.adapter;
 import android.content.Context;
 import android.graphics.drawable.PictureDrawable;
 import android.net.Uri;
+import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
+import android.text.format.DateUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -45,13 +47,17 @@ import com.owncloud.android.utils.svg.SvgSoftwareLayerSetter;
 
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
  * Adapter for the activity view
  */
 
-public class ActivityListAdapter extends RecyclerView.Adapter<ActivityListAdapter.ActivityViewHolder> {
+public class ActivityListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
+
+    public static final int HEADER_TYPE=100;
+    public static final int ACTIVITY_TYPE=101;
 
     private Context context;
     private List<Object> mValues;
@@ -63,43 +69,82 @@ public class ActivityListAdapter extends RecyclerView.Adapter<ActivityListAdapte
 
     public void setActivityItems(List<Object> activityItems) {
         mValues.clear();
-        mValues.addAll(activityItems);
+        String sTime="";
+        for (Object o : activityItems) {
+            Activity activity = (Activity) o;
+            String time=DisplayUtils.getRelativeTimestamp(context,
+                    activity.getDatetime().getTime()).toString();
+            if(sTime.equalsIgnoreCase(time)){
+                mValues.add(activity);
+            }else{
+
+                sTime=time;
+                mValues.add(sTime);
+                mValues.add(activity);
+            }
+        }
         notifyDataSetChanged();
-    }
 
-    @Override
-    public ActivityViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_list_item, parent, false);
-        return new ActivityViewHolder(v);
     }
 
     @Override
-    public void onBindViewHolder(ActivityViewHolder holder, int position) {
-        Activity activity = (Activity) mValues.get(position);
-        if (activity.getDatetime() != null) {
-            holder.dateTime.setText(DisplayUtils.getRelativeTimestamp(context,
-                    activity.getDatetime().getTime()));
-        } else {
-            holder.dateTime.setText(DisplayUtils.getRelativeTimestamp(context,
-                    activity.getDate().getTime()));
-        }
-
-        if (!TextUtils.isEmpty(activity.getSubject())) {
-            holder.subject.setText(activity.getSubject());
-            holder.subject.setVisibility(View.VISIBLE);
-        } else {
-            holder.subject.setVisibility(View.GONE);
+    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        if(viewType==ACTIVITY_TYPE) {
+            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_list_item, parent, false);
+            return new ActivityViewHolder(v);
+        }else {
+            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_list_item_header, parent, false);
+            return new ActivityViewHeaderHolder(v);
         }
 
-        if (!TextUtils.isEmpty(activity.getMessage())) {
-            holder.message.setText(activity.getMessage());
-            holder.message.setVisibility(View.VISIBLE);
-        } else {
-            holder.message.setVisibility(View.GONE);
-        }
+    }
 
-        if (!TextUtils.isEmpty(activity.getIcon())) {
-            downloadIcon(activity.getIcon(), holder.activityIcon);
+    @Override
+    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+
+        if(holder instanceof ActivityViewHolder) {
+            ActivityViewHolder activityViewHolder=(ActivityViewHolder) holder;
+            Activity activity = (Activity) mValues.get(position);
+            if (activity.getDatetime() != null) {
+                activityViewHolder.dateTime.setText(DisplayUtils.getRelativeTimestamp(context,
+                        activity.getDatetime().getTime()));
+            } else {
+                activityViewHolder.dateTime.setText(DisplayUtils.getRelativeTimestamp(context,
+                        new Date().getTime()));
+            }
+
+            if (!TextUtils.isEmpty(activity.getSubject())) {
+                activityViewHolder.subject.setText(activity.getSubject());
+                activityViewHolder.subject.setVisibility(View.VISIBLE);
+            } else {
+                activityViewHolder.subject.setVisibility(View.GONE);
+            }
+
+            if (!TextUtils.isEmpty(activity.getMessage())) {
+                activityViewHolder.message.setText(activity.getMessage());
+                activityViewHolder.message.setVisibility(View.VISIBLE);
+            } else {
+                activityViewHolder.message.setVisibility(View.GONE);
+            }
+
+            if (!TextUtils.isEmpty(activity.getIcon())) {
+                downloadIcon(activity.getIcon(), activityViewHolder.activityIcon);
+            }
+
+            ArrayList<String> richObjects=new ArrayList<>();
+            richObjects.add("http://static3.businessinsider.com/image/55b675ab2acae7c7018ba34e-1200/milky-way-galaxy.jpg");
+            richObjects.add("http://static3.businessinsider.com/image/55b675ab2acae7c7018ba34e-1200/milky-way-galaxy.jpg");
+            richObjects.add("http://static3.businessinsider.com/image/55b675ab2acae7c7018ba34e-1200/milky-way-galaxy.jpg");
+            richObjects.add("http://static3.businessinsider.com/image/55b675ab2acae7c7018ba34e-1200/milky-way-galaxy.jpg");
+            richObjects.add("http://static3.businessinsider.com/image/55b675ab2acae7c7018ba34e-1200/milky-way-galaxy.jpg");
+
+            RichObjectAdapter richObjectAdapter=new RichObjectAdapter(richObjects);
+            activityViewHolder.list.setLayoutManager(new GridLayoutManager(context,4));
+            activityViewHolder.list.setAdapter(richObjectAdapter);
+
+        }else{
+            ActivityViewHeaderHolder activityViewHeaderHolder=(ActivityViewHeaderHolder)holder;
+            activityViewHeaderHolder.title.setText((String)mValues.get(position));
         }
     }
 
@@ -125,6 +170,14 @@ public class ActivityListAdapter extends RecyclerView.Adapter<ActivityListAdapte
                 .into(itemViewType);
     }
 
+    @Override
+    public int getItemViewType(int position) {
+        if(mValues.get(position) instanceof Activity)
+            return ACTIVITY_TYPE;
+        else
+            return HEADER_TYPE;
+    }
+
     @Override
     public int getItemCount() {
         return mValues.size();
@@ -136,6 +189,7 @@ public class ActivityListAdapter extends RecyclerView.Adapter<ActivityListAdapte
         private final TextView subject;
         private final TextView message;
         private final TextView dateTime;
+        private final RecyclerView list;
 
         private ActivityViewHolder(View itemView) {
             super(itemView);
@@ -143,6 +197,19 @@ public class ActivityListAdapter extends RecyclerView.Adapter<ActivityListAdapte
             subject = (TextView) itemView.findViewById(R.id.activity_subject);
             message = (TextView) itemView.findViewById(R.id.activity_message);
             dateTime = (TextView) itemView.findViewById(R.id.activity_datetime);
+            list = (RecyclerView) itemView.findViewById(R.id.list);
+        }
+    }
+
+    class ActivityViewHeaderHolder extends RecyclerView.ViewHolder {
+
+        private final TextView title;
+
+        private ActivityViewHeaderHolder(View itemView) {
+            super(itemView);
+            title = (TextView) itemView.findViewById(R.id.title_header);
+
         }
     }
+
 }

+ 56 - 0
src/main/java/com/owncloud/android/ui/adapter/RichObjectAdapter.java

@@ -0,0 +1,56 @@
+package com.owncloud.android.ui.adapter;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+import com.bumptech.glide.Glide;
+import com.owncloud.android.MainApp;
+import com.owncloud.android.R;
+
+import java.util.ArrayList;
+
+/**
+ * Created by alejandro on 11/05/17.
+ */
+
+public class RichObjectAdapter extends RecyclerView.Adapter<RichObjectAdapter.RichObjectViewHolder> {
+
+    private final ArrayList<String> mValues;
+
+    public RichObjectAdapter(ArrayList<String> values){
+        this.mValues=values;
+    }
+
+    @Override
+    public RichObjectViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rich_object_item, parent, false);
+        return new RichObjectViewHolder(v);
+    }
+
+    @Override
+    public int getItemCount() {
+        return mValues.size();
+    }
+
+    @Override
+    public void onBindViewHolder(RichObjectViewHolder holder, int position) {
+        String url=mValues.get(position);
+        Glide.with(MainApp.getAppContext())
+                .load(url)
+                .into(holder.image);
+    }
+
+    static class RichObjectViewHolder extends RecyclerView.ViewHolder{
+
+        ImageView image;
+        RichObjectViewHolder(View v){
+            super(v);
+            image=(ImageView)v.findViewById(R.id.image);
+        }
+
+    }
+
+}

+ 5 - 0
src/main/res/layout/activity_list_item.xml

@@ -61,6 +61,11 @@
             android:text="@string/placeholder_sentence"
             android:textColor="?android:attr/textColorSecondary"/>
 
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/list"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+
         <TextView
             android:id="@+id/activity_datetime"
             android:layout_width="wrap_content"

+ 17 - 0
src/main/res/layout/activity_list_item_header.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <TextView
+        android:id="@+id/title_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textSize="20sp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginTop="10dp"
+        android:text="Header"
+
+        />
+
+</LinearLayout>

+ 12 - 0
src/main/res/layout/rich_object_item.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+
+    <ImageView
+        android:id="@+id/image"
+        android:layout_width="80dp"
+        android:layout_height="80dp"
+        android:layout_margin="5dp"/>
+
+</LinearLayout>