Skip to content

Commit 10f8423

Browse files
Albert LoAlbert Lo
Albert Lo
authored and
Albert Lo
committed
Add RecyclerItemClickListener to RecyclerViewExample
Upgrade gradle build and RecyclerViewExample to use API 22
1 parent 4068891 commit 10f8423

File tree

5 files changed

+56
-15
lines changed

5 files changed

+56
-15
lines changed

build.gradle

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@ buildscript {
77
url "https://jitpack.io"
88
}
99
}
10+
ext {
11+
// define common dependencies that will be shared across multiple projects
12+
libraries = [
13+
recyclerViewLib: 'com.android.support:recyclerview-v7:22.2.1'
14+
]
15+
}
1016
dependencies {
11-
classpath 'com.android.tools.build:gradle:1.0.0'
17+
classpath 'com.android.tools.build:gradle:1.1.3'
1218
classpath 'com.github.dcendents:android-maven-plugin:1.2'
1319

1420
// NOTE: Do not place your application dependencies here; they belong

demo/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ android {
2626

2727
dependencies {
2828
compile project(":library")
29-
compile 'com.android.support:recyclerview-v7:21.0.0'
29+
compile rootProject.ext.libraries.recyclerViewLib
3030
compile 'com.daimajia.easing:library:1.0.0@aar'
3131
compile 'com.daimajia.androidanimations:library:1.1.2@aar'
3232
compile 'com.nineoldandroids:library:2.4.0'

demo/src/main/java/com/daimajia/swipedemo/RecyclerViewExample.java

+19-4
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,21 @@
1010
import android.util.Log;
1111
import android.view.Menu;
1212
import android.view.MenuItem;
13+
import android.view.View;
14+
import android.widget.Toast;
1315

1416
import com.daimajia.swipe.util.Attributes;
1517
import com.daimajia.swipedemo.adapter.RecyclerViewAdapter;
1618
import com.daimajia.swipedemo.adapter.util.DividerItemDecoration;
19+
import com.daimajia.swipedemo.adapter.util.RecyclerItemClickListener;
1720

1821
import java.util.ArrayList;
1922
import java.util.Arrays;
2023

2124
import jp.wasabeef.recyclerview.animators.FadeInLeftAnimator;
2225

2326
public class RecyclerViewExample extends Activity {
24-
27+
private static final String TAG = RecyclerViewExample.class.getSimpleName();
2528
/**
2629
* RecyclerView: The new recycler view replaces the list view. Its more modular and therefore we
2730
* must implement some of the functionality ourselves and attach it to our recyclerview.
@@ -44,7 +47,7 @@ protected void onCreate(Bundle savedInstanceState) {
4447
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
4548
ActionBar actionBar = getActionBar();
4649
if (actionBar != null) {
47-
actionBar.setTitle("RecyclerView");
50+
actionBar.setTitle(TAG);
4851
}
4952
}
5053

@@ -54,6 +57,18 @@ protected void onCreate(Bundle savedInstanceState) {
5457
// Item Decorator:
5558
recyclerView.addItemDecoration(new DividerItemDecoration(getResources().getDrawable(R.drawable.divider)));
5659
recyclerView.setItemAnimator(new FadeInLeftAnimator());
60+
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(recyclerView,
61+
new RecyclerItemClickListener.OnItemClickListener() {
62+
@Override
63+
public void onItemClick(View view, int position) {
64+
Log.i(TAG, "onItemClick: " + position);
65+
}
66+
67+
@Override
68+
public void onItemLongClick(View view, int position) {
69+
Toast.makeText(view.getContext(), "onItemLongClick: " + position, Toast.LENGTH_LONG).show();
70+
}
71+
}));
5772

5873
// Adapter:
5974
String[] adapterData = new String[]{"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"};
@@ -63,7 +78,7 @@ protected void onCreate(Bundle savedInstanceState) {
6378
recyclerView.setAdapter(mAdapter);
6479

6580
/* Listeners */
66-
recyclerView.setOnScrollListener(onScrollListener);
81+
recyclerView.addOnScrollListener(onScrollListener);
6782
}
6883

6984
/**
@@ -73,7 +88,7 @@ protected void onCreate(Bundle savedInstanceState) {
7388
@Override
7489
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
7590
super.onScrollStateChanged(recyclerView, newState);
76-
Log.e("ListView", "onScrollStateChanged");
91+
Log.i(TAG, "onScrollStateChanged");
7792
}
7893

7994
@Override
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,60 @@
11
package com.daimajia.swipedemo.adapter.util;
22

3-
import android.content.Context;
43
import android.support.v7.widget.RecyclerView;
4+
import android.util.Log;
55
import android.view.GestureDetector;
66
import android.view.MotionEvent;
77
import android.view.View;
88

99
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
10+
private static final String TAG = RecyclerItemClickListener.class.getSimpleName();
1011
private OnItemClickListener mListener;
12+
private boolean disallowIntercept;
1113

1214
public interface OnItemClickListener {
1315
public void onItemClick(View view, int position);
16+
public void onItemLongClick(View view, int position);
1417
}
1518

1619
GestureDetector mGestureDetector;
1720

18-
public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
21+
public RecyclerItemClickListener(final RecyclerView recyclerView, OnItemClickListener listener) {
1922
mListener = listener;
20-
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
23+
mGestureDetector = new GestureDetector(recyclerView.getContext(), new GestureDetector.SimpleOnGestureListener() {
2124
@Override
2225
public boolean onSingleTapUp(MotionEvent e) {
2326
return true;
2427
}
28+
29+
@Override
30+
public void onLongPress(MotionEvent e) {
31+
View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
32+
if (childView != null && mListener != null ) {
33+
mListener.onItemLongClick(childView, recyclerView.getChildLayoutPosition(childView));
34+
}
35+
}
2536
});
2637
}
2738

2839
@Override
2940
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
30-
View childView = view.findChildViewUnder(e.getX(), e.getY());
31-
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
32-
mListener.onItemClick(childView, view.getChildPosition(childView));
41+
Log.i(TAG, "onInterceptTouchEvent: " + disallowIntercept);
42+
if (!disallowIntercept) {
43+
View childView = view.findChildViewUnder(e.getX(), e.getY());
44+
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
45+
mListener.onItemClick(childView, view.getChildLayoutPosition(childView));
46+
47+
}
3348
}
3449
return false;
3550
}
3651

3752
@Override
3853
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
3954
}
55+
56+
@Override
57+
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
58+
this.disallowIntercept = disallowIntercept;
59+
}
4060
}

library/build.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ android {
55
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
66

77
defaultConfig {
8-
minSdkVersion 8
8+
minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
99
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
1010
}
1111
}
1212

1313
dependencies {
14-
compile 'com.android.support:recyclerview-v7:21.0.0'
15-
compile 'com.android.support:support-v4:22.1.1'
14+
compile rootProject.ext.libraries.recyclerViewLib
15+
compile 'com.android.support:support-v4:22.2.1'
1616
}
1717
apply from: './gradle-mvn-push.gradle'
1818

0 commit comments

Comments
 (0)