diff --git a/example/app/build.gradle b/example/app/build.gradle
index a79d4d6..386a8dc 100644
--- a/example/app/build.gradle
+++ b/example/app/build.gradle
@@ -19,14 +19,30 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
+
+ packagingOptions {
+ exclude 'META-INF/LICENSE'
+ exclude 'META-INF/NOTICE'
+ }
+
+ dexOptions {
+ preDexLibraries = false
+ }
}
dependencies {
testCompile 'junit:junit:4.12'
+ compile 'com.android.support:support-v4:22.2.1'
compile 'com.android.support:appcompat-v7:22.2.1'
-
compile 'com.android.support:recyclerview-v7:22.0.+'
+ compile 'com.github.bumptech.glide:glide:3.6.1'
+
+ // The library reference
compile project(':library')
-// compile 'com.github.thorbenprimke:realm-recyclerview:0.9.1'
+// compile 'com.github.thorbenprimke:realm-recyclerview:0.9.2'
+
+ // The date project reference
+ // compile project(':data')
+ compile 'com.github.thorbenprimke:realm-nytimes-data:0.9.0'
}
diff --git a/example/app/src/main/AndroidManifest.xml b/example/app/src/main/AndroidManifest.xml
index 7af6e55..254e514 100644
--- a/example/app/src/main/AndroidManifest.xml
+++ b/example/app/src/main/AndroidManifest.xml
@@ -2,6 +2,9 @@
+
+
+
-
+
+
diff --git a/example/app/src/main/java/co/moonmonkeylabs/realmrecyclerview/example/GridExampleActivity.java b/example/app/src/main/java/co/moonmonkeylabs/realmrecyclerview/example/GridExampleActivity.java
new file mode 100644
index 0000000..87f298b
--- /dev/null
+++ b/example/app/src/main/java/co/moonmonkeylabs/realmrecyclerview/example/GridExampleActivity.java
@@ -0,0 +1,121 @@
+package co.moonmonkeylabs.realmrecyclerview.example;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+
+import co.moonmonkeylabs.realmnytimesdata.NYTimesDataLoader;
+import co.moonmonkeylabs.realmnytimesdata.NYTimesModule;
+import co.moonmonkeylabs.realmnytimesdata.model.NYTimesMultimedium;
+import co.moonmonkeylabs.realmnytimesdata.model.NYTimesStory;
+import co.moonmonkeylabs.realmrecyclerview.RealmRecyclerView;
+import io.realm.Realm;
+import io.realm.RealmBasedRecyclerViewAdapter;
+import io.realm.RealmConfiguration;
+import io.realm.RealmList;
+import io.realm.RealmResults;
+import io.realm.RealmViewHolder;
+
+public class GridExampleActivity extends AppCompatActivity {
+
+ private RealmRecyclerView realmRecyclerView;
+ private NYTimesStoryRecyclerViewAdapter nyTimesStoryAdapter;
+ private Realm realm;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.activity_main_grid_layout);
+ realmRecyclerView = (RealmRecyclerView) findViewById(R.id.realm_recycler_view);
+
+ setTitle(getResources().getString(
+ R.string.activity_layout_name,
+ getIntent().getStringExtra("Type")));
+
+ resetRealm();
+
+ Realm.setDefaultConfiguration(getRealmConfig());
+ realm = Realm.getDefaultInstance();
+ RealmResults nyTimesStories =
+ realm.where(NYTimesStory.class).findAllSorted("sortTimeStamp", false);
+ nyTimesStoryAdapter = new NYTimesStoryRecyclerViewAdapter(this, nyTimesStories, true, true);
+ realmRecyclerView.setAdapter(nyTimesStoryAdapter);
+
+ final NYTimesDataLoader nyTimesDataLoader = new NYTimesDataLoader();
+ nyTimesDataLoader.loadData("home", realm, "b9989f55a0c330b0bdfea069af08b163:15:73381676");
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ realm.close();
+ realm = null;
+ }
+
+ public class NYTimesStoryRecyclerViewAdapter extends RealmBasedRecyclerViewAdapter {
+
+ public NYTimesStoryRecyclerViewAdapter(
+ Context context,
+ RealmResults realmResults,
+ boolean automaticUpdate,
+ boolean animateIdType) {
+ super(context, realmResults, automaticUpdate, animateIdType);
+ }
+
+ public class ViewHolder extends RealmViewHolder {
+
+ public TextView title;
+ public TextView publishedDate;
+ public ImageView image;
+ public TextView storyAbstract;
+
+ public ViewHolder(LinearLayout container) {
+ super(container);
+ this.title = (TextView) container.findViewById(R.id.title);
+ this.publishedDate = (TextView) container.findViewById(R.id.date);
+ this.image = (ImageView) container.findViewById(R.id.image);
+ this.storyAbstract = (TextView) container.findViewById(R.id.story_abstract);
+ }
+ }
+
+ @Override
+ public ViewHolder onCreateRealmViewHolder(ViewGroup viewGroup, int viewType) {
+ View v = inflater.inflate(R.layout.grid_item_view, viewGroup, false);
+ ViewHolder vh = new ViewHolder((LinearLayout) v);
+ return vh;
+ }
+
+ @Override
+ public void onBindRealmViewHolder(ViewHolder viewHolder, int position) {
+ final NYTimesStory nyTimesStory = realmResults.get(position);
+ viewHolder.title.setText(nyTimesStory.getTitle());
+ viewHolder.publishedDate.setText(nyTimesStory.getPublishedDate());
+ final RealmList multimedia = nyTimesStory.getMultimedia();
+ if (multimedia != null && !multimedia.isEmpty()) {
+ Glide.with(GridExampleActivity.this).load(
+ multimedia.get(0).getUrl()).into(viewHolder.image);
+ }
+ viewHolder.storyAbstract.setText(nyTimesStory.getStoryAbstract());
+ }
+ }
+
+ private RealmConfiguration getRealmConfig() {
+ return new RealmConfiguration
+ .Builder(this)
+ .setModules(Realm.getDefaultModule(), new NYTimesModule())
+ .build();
+ }
+
+ private void resetRealm() {
+ Realm.deleteRealm(getRealmConfig());
+ }
+}
diff --git a/example/app/src/main/java/co/moonmonkeylabs/realmrecyclerview/example/LayoutSelectorActivity.java b/example/app/src/main/java/co/moonmonkeylabs/realmrecyclerview/example/LayoutSelectorActivity.java
index 7e670fe..b2363de 100644
--- a/example/app/src/main/java/co/moonmonkeylabs/realmrecyclerview/example/LayoutSelectorActivity.java
+++ b/example/app/src/main/java/co/moonmonkeylabs/realmrecyclerview/example/LayoutSelectorActivity.java
@@ -47,7 +47,8 @@ public void onClick(View v) {
new View.OnClickListener() {
@Override
public void onClick(View v) {
- Intent intent = new Intent(LayoutSelectorActivity.this, MainActivity.class);
+ Intent intent =
+ new Intent(LayoutSelectorActivity.this, GridExampleActivity.class);
intent.putExtra("Type", "Grid");
startActivity(intent);
}
diff --git a/example/app/src/main/res/layout/activity_main_grid_layout.xml b/example/app/src/main/res/layout/activity_main_grid_layout.xml
index 9f575a9..7771390 100644
--- a/example/app/src/main/res/layout/activity_main_grid_layout.xml
+++ b/example/app/src/main/res/layout/activity_main_grid_layout.xml
@@ -1,4 +1,4 @@
-
-
+
diff --git a/example/app/src/main/res/layout/grid_item_view.xml b/example/app/src/main/res/layout/grid_item_view.xml
new file mode 100644
index 0000000..e8f4288
--- /dev/null
+++ b/example/app/src/main/res/layout/grid_item_view.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/settings.gradle b/example/settings.gradle
index b49f0c1..f88e6ae 100644
--- a/example/settings.gradle
+++ b/example/settings.gradle
@@ -1,4 +1,7 @@
include ':app'
include 'library'
-project(':library').projectDir = new File(settingsDir, '../library')
\ No newline at end of file
+project(':library').projectDir = new File(settingsDir, '../library')
+
+include 'data'
+project(':data').projectDir = new File(settingsDir, '../../realm-nytimes-data/library')
\ No newline at end of file
diff --git a/library/build.gradle b/library/build.gradle
index 394a30c..9dd9f56 100644
--- a/library/build.gradle
+++ b/library/build.gradle
@@ -22,7 +22,7 @@ dependencies {
compile fileTree(dir: 'libs', include: ['diffutils-1.2.1.jar'])
compile 'com.android.support:recyclerview-v7:22.0.+'
- compile 'io.realm:realm-android:0.82.+'
+ compile 'io.realm:realm-android:0.84.1'
compile 'com.github.TonicArtos:SuperSLiM:ed0ba4b4d2'
}