Skip to content

support for PagedListAdapter and migrate to androidX #564

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added AndroidSwipeLayout.zip
Binary file not shown.
10 changes: 9 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@ buildscript {
maven {
url "https://jitpack.io"
}
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
classpath 'com.android.tools.build:gradle:4.2.2'
classpath 'com.github.dcendents:android-maven-plugin:1.2'

// NOTE: Do not place your application dependencies here; they belong
Expand All @@ -22,5 +26,9 @@ allprojects {
maven {
url "https://jitpack.io"
}
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
}
32 changes: 25 additions & 7 deletions demo/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ repositories {
}

android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
compileSdkVersion 28
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
Expand All @@ -25,11 +25,29 @@ android {
}

dependencies {
compile project(":library")
compile 'com.android.support:recyclerview-v7:25.1.1'
compile 'com.daimajia.easing:library:1.0.0@aar'
compile 'com.daimajia.androidanimations:library:1.1.2@aar'
compile 'com.nineoldandroids:library:2.4.0'
def glide_version = "4.3.1"
def view_model_version = "1.1.0"
def support_version = "27.1.0"

implementation project(":library")
implementation "com.android.support:appcompat-v7:$support_version"
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.daimajia.easing:library:1.0.0@aar'
implementation 'com.daimajia.androidanimations:library:1.1.2@aar'
implementation 'com.nineoldandroids:library:2.4.0'
// This dude gave a shoutout to you (daimajia) on his github page:
compile 'jp.wasabeef:recyclerview-animators:1.0.3@aar'
implementation 'jp.wasabeef:recyclerview-animators:1.0.3@aar'

//adding glide
implementation "com.github.bumptech.glide:glide:$glide_version"
annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"

//adding retrofit
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'

//adding view model
implementation "android.arch.lifecycle:extensions:$view_model_version"
implementation "android.arch.lifecycle:viewmodel:$view_model_version"
implementation 'androidx.paging:paging-runtime:2.1.2'
}
2 changes: 2 additions & 0 deletions demo/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.daimajia.swipedemo">

<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk tools:overrideLibrary="org.lucasr.twowayview, org.lucasr.twowayview.widget, jp.wasabeef.recyclerview" />

<application
Expand All @@ -22,6 +23,7 @@
<activity android:name="com.daimajia.swipedemo.ListViewExample" />
<activity android:name="com.daimajia.swipedemo.GridViewExample" />
<activity android:name="com.daimajia.swipedemo.RecyclerViewExample" />
<activity android:name="com.daimajia.swipedemo.RecyclerViewPagedExample" />
<activity android:name=".NestedExample" />
</application>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@
import android.widget.AdapterView;
import android.widget.GridView;

import androidx.appcompat.app.AppCompatActivity;

import com.daimajia.swipe.util.Attributes;
import com.daimajia.swipedemo.adapter.GridViewAdapter;

public class GridViewExample extends Activity{
public class GridViewExample extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@
import android.widget.ListView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.util.Attributes;
import com.daimajia.swipedemo.adapter.ListViewAdapter;

public class ListViewExample extends Activity {
public class ListViewExample extends AppCompatActivity {

private ListView mListView;
private ListViewAdapter mAdapter;
Expand Down
6 changes: 5 additions & 1 deletion demo/src/main/java/com/daimajia/swipedemo/MyActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.daimajia.swipe.SwipeLayout;
import com.nineoldandroids.view.ViewHelper;

public class MyActivity extends Activity {
public class MyActivity extends AppCompatActivity {

private SwipeLayout sample1, sample2, sample3;

Expand Down Expand Up @@ -183,6 +185,8 @@ public boolean onOptionsItemSelected(MenuItem item) {
return true;
} else if (id == R.id.action_recycler) {
startActivity(new Intent(this, RecyclerViewExample.class));
} else if (id == R.id.action_recycler_paged) {
startActivity(new Intent(this, RecyclerViewPagedExample.class));
}
return super.onOptionsItemSelected(item);
}
Expand Down
4 changes: 3 additions & 1 deletion demo/src/main/java/com/daimajia/swipedemo/NestedExample.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.daimajia.swipe.SwipeLayout;

public class NestedExample extends Activity{
public class NestedExample extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.daimajia.swipe.util.Attributes;
import com.daimajia.swipedemo.adapter.RecyclerViewAdapter;
import com.daimajia.swipedemo.adapter.util.DividerItemDecoration;
Expand All @@ -20,7 +22,7 @@

import jp.wasabeef.recyclerview.animators.FadeInLeftAnimator;

public class RecyclerViewExample extends Activity {
public class RecyclerViewExample extends AppCompatActivity {

/**
* RecyclerView: The new recycler view replaces the list view. Its more modular and therefore we
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package com.daimajia.swipedemo;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import androidx.paging.PagedList;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.daimajia.swipedemo.adapter.PagedItemAdapter;
import com.daimajia.swipedemo.models.Item;
import com.daimajia.swipedemo.retrofit.ItemViewModel;

import java.util.ArrayList;

public class RecyclerViewPagedExample extends AppCompatActivity {

/**
* RecyclerView: The new recycler view replaces the list view. Its more modular and therefore we
* must implement some of the functionality ourselves and attach it to our recyclerview.
* <p/>
* 1) Position items on the screen: This is done with LayoutManagers
* 2) Animate & Decorate views: This is done with ItemAnimators & ItemDecorators
* 3) Handle any touch events apart from scrolling: This is now done in our adapter's ViewHolder
*/

private RecyclerView recyclerView;
private RecyclerView.Adapter mAdapter;

private ArrayList<String> mDataSet;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recyclerview);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar();
if (actionBar != null) {
actionBar.setTitle("RecyclerView");
}
}

//setting up recyclerview
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);

//getting our ItemViewModel
ItemViewModel itemViewModel = ViewModelProviders.of(this).get(ItemViewModel.class);

//creating the Adapter
final PagedItemAdapter adapter = new PagedItemAdapter(this);


//observing the itemPagedList from view model
itemViewModel.itemPagedList.observe(this, new Observer<PagedList<Item>>() {
@Override
public void onChanged(@Nullable PagedList<Item> items) {

//in case of any changes
//submitting the items to adapter
adapter.submitList(items);
}
});

//setting the adapter
recyclerView.setAdapter(adapter);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_listview) {
startActivity(new Intent(this, ListViewExample.class));
finish();
return true;
} else if (id == R.id.action_gridview) {
startActivity(new Intent(this, GridViewExample.class));
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package com.daimajia.swipedemo.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.daimajia.swipe.adapters.PagedListSwipeAdapter;
import com.daimajia.swipedemo.R;
import com.daimajia.swipedemo.models.Item;

public class PagedItemAdapter extends PagedListSwipeAdapter<Item, PagedItemAdapter.ItemViewHolder> {

private Context mCtx;


public PagedItemAdapter(Context mCtx) {
super(DIFF_CALLBACK);
this.mCtx = mCtx;
}

@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mCtx).inflate(R.layout.recyclerview_users, parent, false);
return new ItemViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
Item item = getItem(position);

if (item != null) {
holder.textView.setText(item.owner.display_name);
Glide.with(mCtx)
.load(item.owner.profile_image)
.into(holder.imageView);
} else {
Toast.makeText(mCtx, "Item is null", Toast.LENGTH_LONG).show();
}
}

private static DiffUtil.ItemCallback<Item> DIFF_CALLBACK =
new DiffUtil.ItemCallback<Item>() {
@Override
public boolean areItemsTheSame(Item oldItem, Item newItem) {
return oldItem.question_id == newItem.question_id;
}

@Override
public boolean areContentsTheSame(Item oldItem, Item newItem) {
return oldItem.equals(newItem);
}
};

@Override
public int getSwipeLayoutResourceId(int position) {
return R.id.swipe;
}


class ItemViewHolder extends RecyclerView.ViewHolder {

TextView textView;
ImageView imageView;

public ItemViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textViewName);
imageView = itemView.findViewById(R.id.imageView);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.daimajia.swipedemo.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
Expand All @@ -10,6 +9,8 @@
import android.widget.TextView;
import android.widget.Toast;

import androidx.recyclerview.widget.RecyclerView;

import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;
import com.daimajia.swipe.SimpleSwipeListener;
Expand Down Expand Up @@ -61,7 +62,7 @@ public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
}

@Override
public void onBindViewHolder(final SimpleViewHolder viewHolder, final int position) {
public void onBindViewHolder(SimpleViewHolder viewHolder, int position) {
String item = mDataset.get(position);
viewHolder.swipeLayout.setShowMode(SwipeLayout.ShowMode.LayDown);
viewHolder.swipeLayout.addSwipeListener(new SimpleSwipeListener() {
Expand Down
Loading