Compare commits

..

No commits in common. "master" and "v1.1.7" have entirely different histories.

41 changed files with 928 additions and 2114 deletions

View File

@ -1,12 +0,0 @@
language: android
android:
components:
- tools
- platform-tools
- build-tools-25.0.2
- android-25
- extra-android-support
- extra
- extra-android-m2repository
script:
- ./gradlew assembleDebug

View File

@ -1,8 +1,4 @@
# Android Swipe Layout [![Build Status](https://travis-ci.org/daimajia/AndroidSwipeLayout.svg?branch=master)](https://travis-ci.org/daimajia/AndroidSwipeLayout) # Android Swipe Layout
[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/daimajia/AndroidSwipeLayout?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Insight.io](https://insight.io/repoBadge/github.com/daimajia/AndroidSwipeLayout)](https://insight.io/github.com/daimajia/AndroidSwipeLayout)
This is the brother of [AndroidViewHover](https://github.com/daimajia/AndroidViewHover). This is the brother of [AndroidViewHover](https://github.com/daimajia/AndroidViewHover).
@ -18,7 +14,7 @@ Time passed, finally...as you see right now.
![](http://ww2.sinaimg.cn/mw690/610dc034jw1ejoplapwtqg208n0e74dx.gif) ![](http://ww2.sinaimg.cn/mw690/610dc034jw1ejoplapwtqg208n0e74dx.gif)
[Download Demo](https://github.com/daimajia/AndroidSwipeLayout/releases/download/v1.1.8/AndroidSwipeLayout-v1.1.8.apk) [Download Demo](https://github.com/daimajia/AndroidSwipeLayout/releases/download/v1.1.4/AndroidSwipeLayout-1.1.4.apk)
Before I made this, I actually found some libraries (eg.[SwipeListView](https://github.com/47deg/android-swipelistview)) that helps developers to integrate swiping with your UI component. Before I made this, I actually found some libraries (eg.[SwipeListView](https://github.com/47deg/android-swipelistview)) that helps developers to integrate swiping with your UI component.
@ -40,9 +36,8 @@ When I start to make this library, I set some goals:
```groovy ```groovy
dependencies { dependencies {
compile 'com.android.support:recyclerview-v7:21.0.0'
compile 'com.android.support:support-v4:20.+' compile 'com.android.support:support-v4:20.+'
compile "com.daimajia.swipelayout:library:1.2.0@aar" compile "com.daimajia.swipelayout:library:1.1.5@aar"
} }
``` ```
@ -54,27 +49,20 @@ dependencies {
<artifactId>support-v4</artifactId> <artifactId>support-v4</artifactId>
<version>r6</version> <version>r6</version>
</dependency> </dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>recyclerview-v7</artifactId>
<version>21.0.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.daimajia.swipelayout</groupId> <groupId>com.daimajia.swipelayout</groupId>
<artifactId>library</artifactId> <artifactId>library</artifactId>
<version>1.2.0</version> <version>1.1.5</version>
<type>apklib</type> <type>apklib</type>
</dependency> </dependency>
``` ```
#### Eclipse #### Eclipse
[AndroidSwipeLayout-v1.1.8.jar](https://github.com/daimajia/AndroidSwipeLayout/releases/download/v1.1.8/AndroidSwipeLayout-v1.1.8.jar) [AndroidSwipeLayout-v1.1.5.jar](https://github.com/daimajia/AndroidSwipeLayout/releases/download/v1.1.5/AndroidSwipeLayout-v1.1.5.jar)
### Step 2 ### Step 2
**Make sure to use the internal adapter instead of your own!**
[Wiki Usage](https://github.com/daimajia/AndroidSwipeLayout/wiki/usage) [Wiki Usage](https://github.com/daimajia/AndroidSwipeLayout/wiki/usage)
## Wiki ## Wiki

View File

@ -3,13 +3,9 @@
buildscript { buildscript {
repositories { repositories {
jcenter() jcenter()
maven {
url "https://jitpack.io"
}
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:2.3.0' classpath 'com.android.tools.build:gradle:0.12.+'
classpath 'com.github.dcendents:android-maven-plugin:1.2'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
@ -19,8 +15,5 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
jcenter() jcenter()
maven {
url "https://jitpack.io"
}
} }
} }

View File

@ -1,13 +1,11 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
repositories {
jcenter()
}
android { android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig { defaultConfig {
applicationId "com.daimajia.swipedemo"
minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
versionName project.VERSION_NAME versionName project.VERSION_NAME
@ -15,21 +13,16 @@ android {
} }
buildTypes { buildTypes {
release { release {
minifyEnabled false runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
} }
lintOptions {
abortOnError false
}
} }
dependencies { dependencies {
compile project(":library") compile project(":library")
compile 'com.android.support:recyclerview-v7:25.1.1' compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.easing:library:1.0.0@aar' compile 'com.daimajia.easing:library:1.0.0@aar'
compile 'com.daimajia.androidanimations:library:1.1.2@aar' compile 'com.daimajia.androidanimations:library:1.1.2@aar'
compile 'com.nineoldandroids:library:2.4.0' compile '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'
} }

View File

@ -1,28 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" package="com.daimajia.swipedemo" >
package="com.daimajia.swipedemo">
<uses-sdk tools:overrideLibrary="org.lucasr.twowayview, org.lucasr.twowayview.widget, jp.wasabeef.recyclerview" />
<application <application
android:allowBackup="true" android:allowBackup="true"
android:icon="@drawable/ic_launcher" android:icon="@drawable/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme" >
<activity <activity
android:name="com.daimajia.swipedemo.MyActivity" android:name="com.daimajia.swipedemo.MyActivity"
android:label="@string/app_name"> android:label="@string/app_name" >
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name="com.daimajia.swipedemo.ListViewExample" /> <activity android:name="com.daimajia.swipedemo.ListViewExample"/>
<activity android:name="com.daimajia.swipedemo.GridViewExample" /> <activity android:name="com.daimajia.swipedemo.GridViewExample"/>
<activity android:name="com.daimajia.swipedemo.RecyclerViewExample" /> <activity android:name=".NestedExample"/>
<activity android:name=".NestedExample" />
</application> </application>
</manifest> </manifest>

View File

@ -7,7 +7,7 @@ import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.GridView; import android.widget.GridView;
import com.daimajia.swipe.util.Attributes; import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import com.daimajia.swipedemo.adapter.GridViewAdapter; import com.daimajia.swipedemo.adapter.GridViewAdapter;
public class GridViewExample extends Activity{ public class GridViewExample extends Activity{
@ -18,7 +18,7 @@ public class GridViewExample extends Activity{
setContentView(R.layout.gridview); setContentView(R.layout.gridview);
final GridView gridView = (GridView)findViewById(R.id.gridview); final GridView gridView = (GridView)findViewById(R.id.gridview);
final GridViewAdapter adapter = new GridViewAdapter(this); final GridViewAdapter adapter = new GridViewAdapter(this);
adapter.setMode(Attributes.Mode.Multiple); adapter.setMode(SwipeItemMangerImpl.Mode.Multiple);
gridView.setAdapter(adapter); gridView.setAdapter(adapter);
gridView.setSelected(false); gridView.setSelected(false);
gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

View File

@ -1,10 +1,8 @@
package com.daimajia.swipedemo; package com.daimajia.swipedemo;
import android.app.ActionBar;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.Menu; import android.view.Menu;
@ -16,8 +14,7 @@ import android.widget.AdapterView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import com.daimajia.swipe.util.Attributes;
import com.daimajia.swipedemo.adapter.ListViewAdapter; import com.daimajia.swipedemo.adapter.ListViewAdapter;
public class ListViewExample extends Activity { public class ListViewExample extends Activity {
@ -25,18 +22,11 @@ public class ListViewExample extends Activity {
private ListView mListView; private ListView mListView;
private ListViewAdapter mAdapter; private ListViewAdapter mAdapter;
private Context mContext = this; private Context mContext = this;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.listview); setContentView(R.layout.listview);
mListView = (ListView) findViewById(R.id.listview); mListView = (ListView)findViewById(R.id.listview);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar();
if (actionBar != null) {
actionBar.setTitle("ListView");
}
}
/** /**
* The following comment is the sample usage of ArraySwipeAdapter. * The following comment is the sample usage of ArraySwipeAdapter.
@ -49,17 +39,17 @@ public class ListViewExample extends Activity {
mAdapter = new ListViewAdapter(this); mAdapter = new ListViewAdapter(this);
mListView.setAdapter(mAdapter); mListView.setAdapter(mAdapter);
mAdapter.setMode(Attributes.Mode.Single); mAdapter.setMode(SwipeItemMangerImpl.Mode.Single);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
((SwipeLayout)(mListView.getChildAt(position - mListView.getFirstVisiblePosition()))).open(true); Toast.makeText(mContext, "Click", Toast.LENGTH_SHORT).show();
} }
}); });
mListView.setOnTouchListener(new View.OnTouchListener() { mListView.setOnTouchListener(new View.OnTouchListener() {
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
Log.e("ListView", "OnTouch"); Log.e("ListView","OnTouch");
return false; return false;
} }
}); });
@ -67,13 +57,13 @@ public class ListViewExample extends Activity {
@Override @Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(mContext, "OnItemLongClickListener", Toast.LENGTH_SHORT).show(); Toast.makeText(mContext, "OnItemLongClickListener", Toast.LENGTH_SHORT).show();
return true; return false;
} }
}); });
mListView.setOnScrollListener(new AbsListView.OnScrollListener() { mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override @Override
public void onScrollStateChanged(AbsListView view, int scrollState) { public void onScrollStateChanged(AbsListView view, int scrollState) {
Log.e("ListView", "onScrollStateChanged"); Log.e("ListView","onScrollStateChanged");
} }
@Override @Override
@ -114,14 +104,10 @@ public class ListViewExample extends Activity {
startActivity(new Intent(this, ListViewExample.class)); startActivity(new Intent(this, ListViewExample.class));
finish(); finish();
return true; return true;
} else if (id == R.id.action_gridview) { }else if(id == R.id.action_gridview){
startActivity(new Intent(this, GridViewExample.class)); startActivity(new Intent(this, GridViewExample.class));
finish(); finish();
return true; return true;
} else if (id == R.id.action_recycler) {
startActivity(new Intent(this, RecyclerViewExample.class));
finish();
return true;
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }

View File

@ -4,7 +4,6 @@ import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
@ -28,12 +27,8 @@ public class MyActivity extends Activity {
//sample1 //sample1
sample1 = (SwipeLayout) findViewById(R.id.sample1); sample1 = (SwipeLayout) findViewById(R.id.sample1);
sample1.setShowMode(SwipeLayout.ShowMode.PullOut); sample1.setShowMode(SwipeLayout.ShowMode.LayDown);
View starBottView = sample1.findViewById(R.id.starbott); sample1.setDragEdge(SwipeLayout.DragEdge.Left);
sample1.addDrag(SwipeLayout.DragEdge.Left, sample1.findViewById(R.id.bottom_wrapper));
sample1.addDrag(SwipeLayout.DragEdge.Right, sample1.findViewById(R.id.bottom_wrapper_2));
sample1.addDrag(SwipeLayout.DragEdge.Top, starBottView);
sample1.addDrag(SwipeLayout.DragEdge.Bottom, starBottView);
sample1.addRevealListener(R.id.delete, new SwipeLayout.OnRevealListener() { sample1.addRevealListener(R.id.delete, new SwipeLayout.OnRevealListener() {
@Override @Override
public void onReveal(View child, SwipeLayout.DragEdge edge, float fraction, int distance) { public void onReveal(View child, SwipeLayout.DragEdge edge, float fraction, int distance) {
@ -41,58 +36,10 @@ public class MyActivity extends Activity {
} }
}); });
sample1.getSurfaceView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, "Click on surface", Toast.LENGTH_SHORT).show();
Log.d(MyActivity.class.getName(), "click on surface");
}
});
sample1.getSurfaceView().setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MyActivity.this, "longClick on surface", Toast.LENGTH_SHORT).show();
Log.d(MyActivity.class.getName(), "longClick on surface");
return true;
}
});
sample1.findViewById(R.id.star2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, "Star", Toast.LENGTH_SHORT).show();
}
});
sample1.findViewById(R.id.trash2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, "Trash Bin", Toast.LENGTH_SHORT).show();
}
});
sample1.findViewById(R.id.magnifier2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, "Magnifier", Toast.LENGTH_SHORT).show();
}
});
sample1.addRevealListener(R.id.starbott, new SwipeLayout.OnRevealListener() {
@Override
public void onReveal(View child, SwipeLayout.DragEdge edge, float fraction, int distance) {
View star = child.findViewById(R.id.star);
float d = child.getHeight() / 2 - star.getHeight() / 2;
ViewHelper.setTranslationY(star, d * fraction);
ViewHelper.setScaleX(star, fraction + 0.6f);
ViewHelper.setScaleY(star, fraction + 0.6f);
}
});
//sample2 //sample2
sample2 = (SwipeLayout) findViewById(R.id.sample2); sample2 = (SwipeLayout) findViewById(R.id.sample2);
sample2.setShowMode(SwipeLayout.ShowMode.LayDown); sample2.setShowMode(SwipeLayout.ShowMode.LayDown);
sample2.addDrag(SwipeLayout.DragEdge.Right, sample2.findViewWithTag("Bottom2"));
// sample2.setShowMode(SwipeLayout.ShowMode.PullOut); // sample2.setShowMode(SwipeLayout.ShowMode.PullOut);
sample2.findViewById(R.id.star).setOnClickListener(new View.OnClickListener() { sample2.findViewById(R.id.star).setOnClickListener(new View.OnClickListener() {
@Override @Override
@ -121,17 +68,11 @@ public class MyActivity extends Activity {
Toast.makeText(MyActivity.this, "Yo", Toast.LENGTH_SHORT).show(); Toast.makeText(MyActivity.this, "Yo", Toast.LENGTH_SHORT).show();
} }
}); });
sample2.getSurfaceView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, "Click on surface", Toast.LENGTH_SHORT).show();
}
});
//sample3 //sample3
sample3 = (SwipeLayout) findViewById(R.id.sample3); sample3 = (SwipeLayout) findViewById(R.id.sample3);
sample3.addDrag(SwipeLayout.DragEdge.Top, sample3.findViewWithTag("Bottom3")); sample3.setDragEdge(SwipeLayout.DragEdge.Top);
sample3.addRevealListener(R.id.bottom_wrapper_child1, new SwipeLayout.OnRevealListener() { sample3.addRevealListener(R.id.bottom_wrapper_child1, new SwipeLayout.OnRevealListener() {
@Override @Override
public void onReveal(View child, SwipeLayout.DragEdge edge, float fraction, int distance) { public void onReveal(View child, SwipeLayout.DragEdge edge, float fraction, int distance) {
@ -144,18 +85,12 @@ public class MyActivity extends Activity {
child.setBackgroundColor(c); child.setBackgroundColor(c);
} }
}); });
sample3.findViewById(R.id.bottom_wrapper_child1).setOnClickListener(new View.OnClickListener() { sample3.findViewById(R.id.star).setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Toast.makeText(MyActivity.this, "Yo!", Toast.LENGTH_SHORT).show(); Toast.makeText(MyActivity.this, "Yo!", Toast.LENGTH_SHORT).show();
} }
}); });
sample3.getSurfaceView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, "Click on surface", Toast.LENGTH_SHORT).show();
}
});
} }
@ -178,11 +113,9 @@ public class MyActivity extends Activity {
} else if (id == R.id.action_gridview) { } else if (id == R.id.action_gridview) {
startActivity(new Intent(this, GridViewExample.class)); startActivity(new Intent(this, GridViewExample.class));
return true; return true;
} else if (id == R.id.action_nested) { } else if(id == R.id.action_nexted){
startActivity(new Intent(this, NestedExample.class)); startActivity(new Intent(this, NestedExample.class));
return true; return true;
} else if (id == R.id.action_recycler) {
startActivity(new Intent(this, RecyclerViewExample.class));
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }

View File

@ -1,111 +0,0 @@
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.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import com.daimajia.swipe.util.Attributes;
import com.daimajia.swipedemo.adapter.RecyclerViewAdapter;
import com.daimajia.swipedemo.adapter.util.DividerItemDecoration;
import java.util.ArrayList;
import java.util.Arrays;
import jp.wasabeef.recyclerview.animators.FadeInLeftAnimator;
public class RecyclerViewExample extends Activity {
/**
* 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");
}
}
// Layout Managers:
recyclerView.setLayoutManager(new LinearLayoutManager(this));
// Item Decorator:
recyclerView.addItemDecoration(new DividerItemDecoration(getResources().getDrawable(R.drawable.divider)));
recyclerView.setItemAnimator(new FadeInLeftAnimator());
// Adapter:
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"};
mDataSet = new ArrayList<String>(Arrays.asList(adapterData));
mAdapter = new RecyclerViewAdapter(this, mDataSet);
((RecyclerViewAdapter) mAdapter).setMode(Attributes.Mode.Single);
recyclerView.setAdapter(mAdapter);
/* Listeners */
recyclerView.setOnScrollListener(onScrollListener);
}
/**
* Substitute for our onScrollListener for RecyclerView
*/
RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
Log.e("ListView", "onScrollStateChanged");
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
// Could hide open views here if you wanted. //
}
};
@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);
}
}

View File

@ -43,12 +43,6 @@ public class ListViewAdapter extends BaseSwipeAdapter {
Toast.makeText(mContext, "DoubleClick", Toast.LENGTH_SHORT).show(); Toast.makeText(mContext, "DoubleClick", Toast.LENGTH_SHORT).show();
} }
}); });
v.findViewById(R.id.delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext, "click delete", Toast.LENGTH_SHORT).show();
}
});
return v; return v;
} }

View File

@ -1,104 +0,0 @@
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;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;
import com.daimajia.swipe.SimpleSwipeListener;
import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.adapters.RecyclerSwipeAdapter;
import com.daimajia.swipedemo.R;
import java.util.ArrayList;
public class RecyclerViewAdapter extends RecyclerSwipeAdapter<RecyclerViewAdapter.SimpleViewHolder> {
public static class SimpleViewHolder extends RecyclerView.ViewHolder {
SwipeLayout swipeLayout;
TextView textViewPos;
TextView textViewData;
Button buttonDelete;
public SimpleViewHolder(View itemView) {
super(itemView);
swipeLayout = (SwipeLayout) itemView.findViewById(R.id.swipe);
textViewPos = (TextView) itemView.findViewById(R.id.position);
textViewData = (TextView) itemView.findViewById(R.id.text_data);
buttonDelete = (Button) itemView.findViewById(R.id.delete);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(getClass().getSimpleName(), "onItemSelected: " + textViewData.getText().toString());
Toast.makeText(view.getContext(), "onItemSelected: " + textViewData.getText().toString(), Toast.LENGTH_SHORT).show();
}
});
}
}
private Context mContext;
private ArrayList<String> mDataset;
//protected SwipeItemRecyclerMangerImpl mItemManger = new SwipeItemRecyclerMangerImpl(this);
public RecyclerViewAdapter(Context context, ArrayList<String> objects) {
this.mContext = context;
this.mDataset = objects;
}
@Override
public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item, parent, false);
return new SimpleViewHolder(view);
}
@Override
public void onBindViewHolder(final SimpleViewHolder viewHolder, final int position) {
String item = mDataset.get(position);
viewHolder.swipeLayout.setShowMode(SwipeLayout.ShowMode.LayDown);
viewHolder.swipeLayout.addSwipeListener(new SimpleSwipeListener() {
@Override
public void onOpen(SwipeLayout layout) {
YoYo.with(Techniques.Tada).duration(500).delay(100).playOn(layout.findViewById(R.id.trash));
}
});
viewHolder.swipeLayout.setOnDoubleClickListener(new SwipeLayout.DoubleClickListener() {
@Override
public void onDoubleClick(SwipeLayout layout, boolean surface) {
Toast.makeText(mContext, "DoubleClick", Toast.LENGTH_SHORT).show();
}
});
viewHolder.buttonDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mItemManger.removeShownLayouts(viewHolder.swipeLayout);
mDataset.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, mDataset.size());
mItemManger.closeAllItems();
Toast.makeText(view.getContext(), "Deleted " + viewHolder.textViewData.getText().toString() + "!", Toast.LENGTH_SHORT).show();
}
});
viewHolder.textViewPos.setText((position + 1) + ".");
viewHolder.textViewData.setText(item);
mItemManger.bind(viewHolder.itemView, position);
}
@Override
public int getItemCount() {
return mDataset.size();
}
@Override
public int getSwipeLayoutResourceId(int position) {
return R.id.swipe;
}
}

View File

@ -1,125 +0,0 @@
package com.daimajia.swipedemo.adapter.util;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.View;
public class DividerItemDecoration extends RecyclerView.ItemDecoration {
private Drawable mDivider;
private boolean mShowFirstDivider = false;
private boolean mShowLastDivider = false;
public DividerItemDecoration(Context context, AttributeSet attrs) {
final TypedArray a = context
.obtainStyledAttributes(attrs, new int[]{android.R.attr.listDivider});
mDivider = a.getDrawable(0);
a.recycle();
}
public DividerItemDecoration(Context context, AttributeSet attrs, boolean showFirstDivider,
boolean showLastDivider) {
this(context, attrs);
mShowFirstDivider = showFirstDivider;
mShowLastDivider = showLastDivider;
}
public DividerItemDecoration(Drawable divider) {
mDivider = divider;
}
public DividerItemDecoration(Drawable divider, boolean showFirstDivider,
boolean showLastDivider) {
this(divider);
mShowFirstDivider = showFirstDivider;
mShowLastDivider = showLastDivider;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
if (mDivider == null) {
return;
}
if (parent.getChildPosition(view) < 1) {
return;
}
if (getOrientation(parent) == LinearLayoutManager.VERTICAL) {
outRect.top = mDivider.getIntrinsicHeight();
} else {
outRect.left = mDivider.getIntrinsicWidth();
}
}
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
if (mDivider == null) {
super.onDrawOver(c, parent, state);
return;
}
// Initialization needed to avoid compiler warning
int left = 0, right = 0, top = 0, bottom = 0, size;
int orientation = getOrientation(parent);
int childCount = parent.getChildCount();
if (orientation == LinearLayoutManager.VERTICAL) {
size = mDivider.getIntrinsicHeight();
left = parent.getPaddingLeft();
right = parent.getWidth() - parent.getPaddingRight();
} else { //horizontal
size = mDivider.getIntrinsicWidth();
top = parent.getPaddingTop();
bottom = parent.getHeight() - parent.getPaddingBottom();
}
for (int i = mShowFirstDivider ? 0 : 1; i < childCount; i++) {
View child = parent.getChildAt(i);
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
if (orientation == LinearLayoutManager.VERTICAL) {
top = child.getTop() - params.topMargin;
bottom = top + size;
} else { //horizontal
left = child.getLeft() - params.leftMargin;
right = left + size;
}
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
// show last divider
if (mShowLastDivider && childCount > 0) {
View child = parent.getChildAt(childCount - 1);
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
if (orientation == LinearLayoutManager.VERTICAL) {
top = child.getBottom() + params.bottomMargin;
bottom = top + size;
} else { // horizontal
left = child.getRight() + params.rightMargin;
right = left + size;
}
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
private int getOrientation(RecyclerView parent) {
if (parent.getLayoutManager() instanceof LinearLayoutManager) {
LinearLayoutManager layoutManager = (LinearLayoutManager) parent.getLayoutManager();
return layoutManager.getOrientation();
} else {
throw new IllegalStateException(
"DividerItemDecoration can only be used with a LinearLayoutManager.");
}
}
}

View File

@ -1,45 +0,0 @@
package com.daimajia.swipedemo.adapter.util;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private OnItemClickListener mListener;
public interface OnItemClickListener {
public void onItemClick(View view, int position);
}
GestureDetector mGestureDetector;
public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
mListener = listener;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
View childView = view.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(childView, view.getChildPosition(childView));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/dark_gray_press" android:state_pressed="true"/>
<item android:drawable="@color/dark_gray_press" android:state_focused="true"/>
<item android:drawable="@color/dark_gray"/>
</selector>

View File

@ -1,24 +0,0 @@
<!--
~ Copyright (C) 2014 Lucas Rocha
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#cccccc"/>
<size android:width="1dp"
android:height="1dp" />
</shape>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/red_press" android:state_pressed="true"/>
<item android:drawable="@color/red_press" android:state_focused="true"/>
<item android:drawable="@color/red"/>
</selector>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/darker_gray" android:state_pressed="true"/>
<item android:drawable="@android:color/darker_gray" android:state_focused="true"/>
<item android:drawable="@android:color/white"/>
</selector>

View File

@ -1,62 +1,57 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<com.daimajia.swipe.SwipeLayout <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:swipe="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent">
<com.daimajia.swipe.SwipeLayout
android:id="@+id/swipe" android:id="@+id/swipe"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
swipe:leftEdgeSwipeOffset="0dp" >
swipe:rightEdgeSwipeOffset="0dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="#FF5534" android:background="#FF5534"
android:gravity="center"
android:tag="Bottom3" android:tag="Bottom3"
android:weightSum="10"> android:weightSum="10"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="80dp">
<ImageView <ImageView
android:id="@+id/trash" android:id="@+id/trash"
android:layout_width="27dp" android:src="@drawable/trash"
android:layout_height="30dp"
android:layout_weight="1" android:layout_weight="1"
android:src="@drawable/trash" /> android:layout_width="27dp"
android:layout_height="30dp" />
<TextView <TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="Delete Item?" android:text="Delete Item?"
android:textSize="17sp"
android:textColor="#fff" android:textColor="#fff"
android:textSize="17sp" /> android:layout_weight="5"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button <Button
android:id="@+id/delete" android:id="@+id/delete"
android:layout_width="0dp" android:textColor="#FF5534"
android:layout_height="40dp" android:background="#ffffff"
android:layout_weight="4"
android:background="@drawable/white"
android:text="Yes,Delete" android:text="Yes,Delete"
android:textColor="#FF5534" /> android:layout_weight="4"
android:layout_width="0dp"
android:layout_height="40dp" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:padding="10dp"
android:layout_height="match_parent"
android:background="@drawable/item_selector" android:background="@drawable/item_selector"
android:padding="10dp"> android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView <TextView
android:id="@+id/position" android:id="@+id/position"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
<TextView <TextView
android:id="@+id/text_data"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="Hover" android:tag="Hover"
android:text="Do not, for one repulse, forgo the purpose that you resolved to effort. " /> android:text="Do not, for one repulse, forgo the purpose that you resolved to effort. "
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout> </LinearLayout>
</com.daimajia.swipe.SwipeLayout> </com.daimajia.swipe.SwipeLayout>
</LinearLayout>

View File

@ -1,17 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.daimajia.swipe.SwipeLayout <com.daimajia.swipe.SwipeLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/godfather" android:id="@+id/godfather"
android:layout_width="match_parent" android:layout_width="match_parent" android:layout_height="match_parent"
android:layout_height="match_parent"> app:drag_edge="bottom">
<ImageView
android:layout_gravity="left|right|top"
android:src="@drawable/bird"
android:layout_width="100dp"
android:layout_height="100dp" />
<LinearLayout <LinearLayout
android:id="@+id/bird_bottom"
android:layout_gravity="bottom"
android:gravity="center" android:gravity="center"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- A RecyclerView with some commonly used attributes -->
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.daimajia.swipe.SwipeLayout xmlns:swipe="http://schemas.android.com/apk/res-auto"
android:id="@+id/swipe"
android:layout_width="match_parent"
android:layout_height="wrap_content"
swipe:leftEdgeSwipeOffset="0dp"
swipe:rightEdgeSwipeOffset="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="#FF5534"
android:gravity="center"
android:tag="Bottom3"
android:weightSum="10">
<ImageView
android:id="@+id/trash"
android:layout_width="27dp"
android:layout_height="30dp"
android:layout_weight="1"
android:src="@drawable/trash" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="Delete Item?"
android:textColor="#fff"
android:textSize="17sp" />
<Button
android:id="@+id/delete"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="4"
android:background="#ffffff"
android:text="Yes,Delete"
android:textColor="#FF5534" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/item_selector"
android:elevation="5dp"
android:padding="10dp">
<TextView
android:id="@+id/position"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/text_data"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="Hover"/>
</LinearLayout>
</com.daimajia.swipe.SwipeLayout>
</LinearLayout>

View File

@ -1,12 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.daimajia.swipe.SwipeLayout <com.daimajia.swipe.SwipeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:background="@drawable/item_selector"
xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="80dp">
android:layout_width="match_parent"
android:layout_height="80dp"
app:clickToClose="true">
<LinearLayout <LinearLayout
android:tag="Bottom1" android:tag="Bottom1"
android:background="#66ddff00" android:background="#66ddff00"
@ -14,18 +10,15 @@
android:layout_width="160dp" android:layout_width="160dp"
android:weightSum="1" android:weightSum="1"
android:layout_height="match_parent"> android:layout_height="match_parent">
<TextView <TextView
android:id="@+id/archive" android:id="@+id/archive"
android:textColor="#fff" android:textColor="#fff"
android:text="Archive" android:text="Archive"
android:layout_weight="0.5" android:layout_weight="0.5"
android:gravity="center" android:gravity="center"
android:clickable="true" android:background="#FF1300"
android:background="@drawable/red"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<TextView <TextView
android:id="@+id/delete" android:id="@+id/delete"
android:text="Delete" android:text="Delete"
@ -37,66 +30,14 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:tag="Bottom4"
android:id="@+id/bottom_wrapper_2"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<ImageView
android:id="@+id/magnifier2"
android:src="@drawable/magnifier"
android:layout_width="70dp"
android:background="#f7e79c"
android:paddingLeft="25dp"
android:paddingRight="25dp"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/star2"
android:src="@drawable/star"
android:layout_width="70dp"
android:background="#4cd964"
android:paddingLeft="25dp"
android:paddingRight="25dp"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/trash2"
android:src="@drawable/trash"
android:layout_width="70dp"
android:background="@drawable/red"
android:paddingLeft="25dp"
android:paddingRight="25dp"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
android:tag="Bottom3"
android:id="@+id/starbott"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/bottom_wrapper_child1"
android:background="@drawable/dark_gray"
android:clickable="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/star"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/star"
android:layout_width="20dp"
android:layout_height="20dp" />
</RelativeLayout>
</LinearLayout>
<TextView
android:padding="10dp" android:padding="10dp"
android:background="@drawable/white" android:background="#ffffff"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:tag="Hover" android:tag="Hover"
android:text="要有最樸素的生活和最遙遠的夢想,即使明天天寒地凍,山高水遠,路遠馬亡。" android:text="要有最樸素的生活和最遙遠的夢想,即使明天天寒地凍,山高水遠,路遠馬亡。"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
</LinearLayout>
</com.daimajia.swipe.SwipeLayout> </com.daimajia.swipe.SwipeLayout>

View File

@ -26,7 +26,7 @@
android:id="@+id/trash" android:id="@+id/trash"
android:src="@drawable/trash" android:src="@drawable/trash"
android:layout_width="70dp" android:layout_width="70dp"
android:background="@drawable/red" android:background="#FF3B30"
android:paddingLeft="25dp" android:paddingLeft="25dp"
android:paddingRight="25dp" android:paddingRight="25dp"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
@ -35,7 +35,7 @@
<LinearLayout <LinearLayout
android:padding="10dp" android:padding="10dp"
android:orientation="vertical" android:orientation="vertical"
android:background="@drawable/white" android:background="#ffffff"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<TextView <TextView

View File

@ -22,11 +22,15 @@
</RelativeLayout> </RelativeLayout>
</LinearLayout> </LinearLayout>
<TextView <LinearLayout
android:padding="10dp" android:padding="10dp"
android:background="#ffffff" android:background="#ffffff"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:tag="Hover" android:tag="Hover"
android:text="None is of freedom or of life deserving unless he daily conquers it anew. " android:text="None is of freedom or of life deserving unless he daily conquers it anew. "
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
</LinearLayout>
</com.daimajia.swipe.SwipeLayout> </com.daimajia.swipe.SwipeLayout>

View File

@ -1,19 +1,14 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android" <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
tools:context=".MyActivity"> tools:context=".MyActivity" >
<item <item android:id="@+id/action_listview"
android:id="@+id/action_listview" android:title="ListView"
android:orderInCategory="100" android:orderInCategory="100"
android:title="ListView" /> />
<item <item android:id="@+id/action_gridview"
android:id="@+id/action_gridview" android:title="GridView"
android:orderInCategory="100" android:orderInCategory="100"
android:title="GridView" /> />
<item <item android:id="@+id/action_nexted"
android:id="@+id/action_recycler" android:title="Complicate"/>
android:orderInCategory="100"
android:title="RecyclerView" />
<item
android:id="@+id/action_nested"
android:title="Complicate" />
</menu> </menu>

View File

@ -2,8 +2,4 @@
<resources> <resources>
<color name="backgroundColor">#E8E8E0</color> <color name="backgroundColor">#E8E8E0</color>
<color name="backgroundColorPress">#DBDBD3</color> <color name="backgroundColorPress">#DBDBD3</color>
<color name="red">#FF3B00</color>
<color name="red_press">#990000</color>
<color name="dark_gray">#4C535B</color>
<color name="dark_gray_press">#ff7e8a97</color>
</resources> </resources>

View File

@ -18,11 +18,11 @@
# org.gradle.parallel=true # org.gradle.parallel=true
VERSION_NAME=1.2.0 VERSION_NAME=1.1.7
VERSION_CODE=22 VERSION_CODE=18
GROUP=com.daimajia.swipelayout GROUP=com.daimajia.swipelayout
ANDROID_BUILD_MIN_SDK_VERSION=9 ANDROID_BUILD_MIN_SDK_VERSION=8
ANDROID_BUILD_TARGET_SDK_VERSION=25 ANDROID_BUILD_TARGET_SDK_VERSION=20
ANDROID_BUILD_SDK_VERSION=25 ANDROID_BUILD_SDK_VERSION=20
ANDROID_BUILD_TOOLS_VERSION=25.0.2 ANDROID_BUILD_TOOLS_VERSION=20.0.0

View File

@ -1,6 +1,6 @@
#Thu Mar 09 16:07:03 CST 2017 #Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip

View File

@ -5,22 +5,13 @@ android {
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig { defaultConfig {
minSdkVersion 9 applicationId "com.daimajia.swipe"
minSdkVersion 8
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
} }
} }
dependencies { dependencies {
compile 'com.android.support:recyclerview-v7:25.2.0' compile 'com.android.support:support-v4:20.+'
compile 'com.android.support:support-v4:25.2.0'
} }
apply from: './gradle-mvn-push.gradle' apply from: './gradle-mvn-push.gradle'
// build a jar with source files
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
artifacts {
archives sourcesJar
}

View File

@ -1,3 +1,2 @@
<manifest package="com.daimajia.swipe">
<application /> <manifest package="com.daimajia.swipe"/>
</manifest>

File diff suppressed because it is too large Load Diff

View File

@ -9,11 +9,10 @@ import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
import com.daimajia.swipe.util.Attributes;
import java.util.List; import java.util.List;
public abstract class ArraySwipeAdapter<T> extends ArrayAdapter implements SwipeItemMangerInterface, SwipeAdapterInterface { public abstract class ArraySwipeAdapter<T> extends ArrayAdapter implements SwipeItemMangerInterface,SwipeAdapterInterface {
private SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this); private SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this);
{} {}
@ -41,15 +40,15 @@ public abstract class ArraySwipeAdapter<T> extends ArrayAdapter implements Swipe
super(context, resource, textViewResourceId, objects); super(context, resource, textViewResourceId, objects);
} }
@Override
public void notifyDatasetChanged() {
super.notifyDataSetChanged();
}
@Override @Override
public View getView(int position, View convertView, ViewGroup parent) { public View getView(int position, View convertView, ViewGroup parent) {
boolean convertViewIsNull = convertView == null;
View v = super.getView(position, convertView, parent); View v = super.getView(position, convertView, parent);
mItemManger.bind(v, position); if(convertViewIsNull){
mItemManger.initialize(v, position);
}else{
mItemManger.updateConvertView(v, position);
}
return v; return v;
} }
@ -68,11 +67,6 @@ public abstract class ArraySwipeAdapter<T> extends ArrayAdapter implements Swipe
mItemManger.closeAllExcept(layout); mItemManger.closeAllExcept(layout);
} }
@Override
public void closeAllItems() {
mItemManger.closeAllItems();
}
@Override @Override
public List<Integer> getOpenItems() { public List<Integer> getOpenItems() {
return mItemManger.getOpenItems(); return mItemManger.getOpenItems();
@ -94,12 +88,12 @@ public abstract class ArraySwipeAdapter<T> extends ArrayAdapter implements Swipe
} }
@Override @Override
public Attributes.Mode getMode() { public SwipeItemMangerImpl.Mode getMode() {
return mItemManger.getMode(); return mItemManger.getMode();
} }
@Override @Override
public void setMode(Attributes.Mode mode) { public void setMode(SwipeItemMangerImpl.Mode mode) {
mItemManger.setMode(mode); mItemManger.setMode(mode);
} }
} }

View File

@ -5,10 +5,9 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
import com.daimajia.swipe.util.Attributes;
import java.util.List; import java.util.List;
@ -41,19 +40,16 @@ public abstract class BaseSwipeAdapter extends BaseAdapter implements SwipeItemM
*/ */
public abstract void fillValues(int position, View convertView); public abstract void fillValues(int position, View convertView);
@Override
public void notifyDatasetChanged() {
super.notifyDataSetChanged();
}
@Override @Override
public final View getView(int position, View convertView, ViewGroup parent) { public final View getView(int position, View convertView, ViewGroup parent) {
View v = convertView; View v = convertView;
if(v == null){ if(v == null){
v = generateView(position, parent); v = generateView(position, parent);
mItemManger.initialize(v, position);
}else{
mItemManger.updateConvertView(v, position);
} }
mItemManger.bind(v, position);
fillValues(position, v); fillValues(position, v);
return v; return v;
} }
@ -73,11 +69,6 @@ public abstract class BaseSwipeAdapter extends BaseAdapter implements SwipeItemM
mItemManger.closeAllExcept(layout); mItemManger.closeAllExcept(layout);
} }
@Override
public void closeAllItems() {
mItemManger.closeAllItems();
}
@Override @Override
public List<Integer> getOpenItems() { public List<Integer> getOpenItems() {
return mItemManger.getOpenItems(); return mItemManger.getOpenItems();
@ -99,12 +90,12 @@ public abstract class BaseSwipeAdapter extends BaseAdapter implements SwipeItemM
} }
@Override @Override
public Attributes.Mode getMode() { public SwipeItemMangerImpl.Mode getMode() {
return mItemManger.getMode(); return mItemManger.getMode();
} }
@Override @Override
public void setMode(Attributes.Mode mode) { public void setMode(SwipeItemMangerImpl.Mode mode) {
mItemManger.setMode(mode); mItemManger.setMode(mode);
} }
} }

View File

@ -7,10 +7,9 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
import com.daimajia.swipe.util.Attributes;
import java.util.List; import java.util.List;
@ -28,8 +27,13 @@ public abstract class CursorSwipeAdapter extends CursorAdapter implements SwipeI
@Override @Override
public View getView(int position, View convertView, ViewGroup parent) { public View getView(int position, View convertView, ViewGroup parent) {
boolean convertViewIsNull = convertView == null;
View v = super.getView(position, convertView, parent); View v = super.getView(position, convertView, parent);
mItemManger.bind(v, position); if(convertViewIsNull){
mItemManger.initialize(v, position);
}else{
mItemManger.updateConvertView(v, position);
}
return v; return v;
} }
@ -48,11 +52,6 @@ public abstract class CursorSwipeAdapter extends CursorAdapter implements SwipeI
mItemManger.closeAllExcept(layout); mItemManger.closeAllExcept(layout);
} }
@Override
public void closeAllItems() {
mItemManger.closeAllItems();
}
@Override @Override
public List<Integer> getOpenItems() { public List<Integer> getOpenItems() {
return mItemManger.getOpenItems(); return mItemManger.getOpenItems();
@ -74,12 +73,12 @@ public abstract class CursorSwipeAdapter extends CursorAdapter implements SwipeI
} }
@Override @Override
public Attributes.Mode getMode() { public SwipeItemMangerImpl.Mode getMode() {
return mItemManger.getMode(); return mItemManger.getMode();
} }
@Override @Override
public void setMode(Attributes.Mode mode) { public void setMode(SwipeItemMangerImpl.Mode mode) {
mItemManger.setMode(mode); mItemManger.setMode(mode);
} }
} }

View File

@ -1,78 +0,0 @@
package com.daimajia.swipe.adapters;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
import com.daimajia.swipe.util.Attributes;
import java.util.List;
public abstract class RecyclerSwipeAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> implements SwipeItemMangerInterface, SwipeAdapterInterface {
public SwipeItemMangerImpl mItemManger = new SwipeItemMangerImpl(this);
@Override
public abstract VH onCreateViewHolder(ViewGroup parent, int viewType);
@Override
public abstract void onBindViewHolder(VH viewHolder, final int position);
@Override
public void notifyDatasetChanged() {
super.notifyDataSetChanged();
}
@Override
public void openItem(int position) {
mItemManger.openItem(position);
}
@Override
public void closeItem(int position) {
mItemManger.closeItem(position);
}
@Override
public void closeAllExcept(SwipeLayout layout) {
mItemManger.closeAllExcept(layout);
}
@Override
public void closeAllItems() {
mItemManger.closeAllItems();
}
@Override
public List<Integer> getOpenItems() {
return mItemManger.getOpenItems();
}
@Override
public List<SwipeLayout> getOpenLayouts() {
return mItemManger.getOpenLayouts();
}
@Override
public void removeShownLayouts(SwipeLayout layout) {
mItemManger.removeShownLayouts(layout);
}
@Override
public boolean isOpen(int position) {
return mItemManger.isOpen(position);
}
@Override
public Attributes.Mode getMode() {
return mItemManger.getMode();
}
@Override
public void setMode(Attributes.Mode mode) {
mItemManger.setMode(mode);
}
}

View File

@ -10,7 +10,6 @@ import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.implments.SwipeItemMangerImpl; import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
import com.daimajia.swipe.util.Attributes;
import java.util.List; import java.util.List;
@ -28,8 +27,13 @@ public abstract class SimpleCursorSwipeAdapter extends SimpleCursorAdapter imple
@Override @Override
public View getView(int position, View convertView, ViewGroup parent) { public View getView(int position, View convertView, ViewGroup parent) {
boolean convertViewIsNull = convertView == null;
View v = super.getView(position, convertView, parent); View v = super.getView(position, convertView, parent);
mItemManger.bind(v, position); if(convertViewIsNull){
mItemManger.initialize(v, position);
}else{
mItemManger.updateConvertView(v, position);
}
return v; return v;
} }
@ -69,12 +73,12 @@ public abstract class SimpleCursorSwipeAdapter extends SimpleCursorAdapter imple
} }
@Override @Override
public Attributes.Mode getMode() { public SwipeItemMangerImpl.Mode getMode() {
return mItemManger.getMode(); return mItemManger.getMode();
} }
@Override @Override
public void setMode(Attributes.Mode mode) { public void setMode(SwipeItemMangerImpl.Mode mode) {
mItemManger.setMode(mode); mItemManger.setMode(mode);
} }
} }

View File

@ -1,15 +1,15 @@
package com.daimajia.swipe.implments; package com.daimajia.swipe.implments;
import android.view.View; import android.view.View;
import android.widget.BaseAdapter;
import com.daimajia.swipe.SimpleSwipeListener; import com.daimajia.swipe.SimpleSwipeListener;
import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.interfaces.SwipeAdapterInterface; import com.daimajia.swipe.interfaces.SwipeAdapterInterface;
import com.daimajia.swipe.interfaces.SwipeItemMangerInterface; import com.daimajia.swipe.interfaces.SwipeItemMangerInterface;
import com.daimajia.swipe.util.Attributes;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -19,7 +19,7 @@ import java.util.Set;
*/ */
public class SwipeItemMangerImpl implements SwipeItemMangerInterface { public class SwipeItemMangerImpl implements SwipeItemMangerInterface {
private Attributes.Mode mode = Attributes.Mode.Single; private Mode mode = Mode.Single;
public final int INVALID_POSITION = -1; public final int INVALID_POSITION = -1;
protected int mOpenPosition = INVALID_POSITION; protected int mOpenPosition = INVALID_POSITION;
@ -27,85 +27,92 @@ public class SwipeItemMangerImpl implements SwipeItemMangerInterface {
protected Set<Integer> mOpenPositions = new HashSet<Integer>(); protected Set<Integer> mOpenPositions = new HashSet<Integer>();
protected Set<SwipeLayout> mShownLayouts = new HashSet<SwipeLayout>(); protected Set<SwipeLayout> mShownLayouts = new HashSet<SwipeLayout>();
protected SwipeAdapterInterface swipeAdapterInterface; protected BaseAdapter mAdapter;
public SwipeItemMangerImpl(SwipeAdapterInterface swipeAdapterInterface) { public SwipeItemMangerImpl(BaseAdapter adapter) {
if (swipeAdapterInterface == null) if(adapter == null)
throw new IllegalArgumentException("SwipeAdapterInterface can not be null"); throw new IllegalArgumentException("Adapter can not be null");
this.swipeAdapterInterface = swipeAdapterInterface; if(!(adapter instanceof SwipeItemMangerInterface))
throw new IllegalArgumentException("adapter should implement the SwipeAdapterInterface");
this.mAdapter = adapter;
} }
public Attributes.Mode getMode() { public enum Mode{
Single, Multiple
};
public Mode getMode(){
return mode; return mode;
} }
public void setMode(Attributes.Mode mode) { public void setMode(Mode mode){
this.mode = mode; this.mode = mode;
mOpenPositions.clear(); mOpenPositions.clear();
mShownLayouts.clear(); mShownLayouts.clear();
mOpenPosition = INVALID_POSITION; mOpenPosition = INVALID_POSITION;
} }
public void bind(View view, int position) { public void initialize(View target, int position) {
int resId = swipeAdapterInterface.getSwipeLayoutResourceId(position); int resId = getSwipeLayoutId(position);
SwipeLayout swipeLayout = (SwipeLayout) view.findViewById(resId);
if (swipeLayout == null) OnLayoutListener onLayoutListener = new OnLayoutListener(position);
SwipeLayout swipeLayout = (SwipeLayout)target.findViewById(resId);
if(swipeLayout == null)
throw new IllegalStateException("can not find SwipeLayout in target view"); throw new IllegalStateException("can not find SwipeLayout in target view");
if (swipeLayout.getTag(resId) == null) {
OnLayoutListener onLayoutListener = new OnLayoutListener(position);
SwipeMemory swipeMemory = new SwipeMemory(position); SwipeMemory swipeMemory = new SwipeMemory(position);
swipeLayout.addSwipeListener(swipeMemory); swipeLayout.addSwipeListener(swipeMemory);
swipeLayout.addOnLayoutListener(onLayoutListener); swipeLayout.addOnLayoutListener(onLayoutListener);
swipeLayout.setTag(resId, new ValueBox(position, swipeMemory, onLayoutListener)); swipeLayout.setTag(resId, new ValueBox(position, swipeMemory, onLayoutListener));
mShownLayouts.add(swipeLayout); mShownLayouts.add(swipeLayout);
} else { }
ValueBox valueBox = (ValueBox) swipeLayout.getTag(resId);
public void updateConvertView(View target, int position) {
int resId = getSwipeLayoutId(position);
SwipeLayout swipeLayout = (SwipeLayout)target.findViewById(resId);
if(swipeLayout == null)
throw new IllegalStateException("can not find SwipeLayout in target view");
ValueBox valueBox = (ValueBox)swipeLayout.getTag(resId);
valueBox.swipeMemory.setPosition(position); valueBox.swipeMemory.setPosition(position);
valueBox.onLayoutListener.setPosition(position); valueBox.onLayoutListener.setPosition(position);
valueBox.position = position; valueBox.position = position;
} }
private int getSwipeLayoutId(int position){
return ((SwipeAdapterInterface)(mAdapter)).getSwipeLayoutResourceId(position);
} }
@Override @Override
public void openItem(int position) { public void openItem(int position) {
if (mode == Attributes.Mode.Multiple) { if(mode == Mode.Multiple){
if (!mOpenPositions.contains(position)) if(!mOpenPositions.contains(position))
mOpenPositions.add(position); mOpenPositions.add(position);
} else { }else{
mOpenPosition = position; mOpenPosition = position;
} }
swipeAdapterInterface.notifyDatasetChanged(); mAdapter.notifyDataSetChanged();
} }
@Override @Override
public void closeItem(int position) { public void closeItem(int position) {
if (mode == Attributes.Mode.Multiple) { if(mode == Mode.Multiple){
mOpenPositions.remove(position); mOpenPositions.remove(position);
} else { }else{
if (mOpenPosition == position) if(mOpenPosition == position)
mOpenPosition = INVALID_POSITION; mOpenPosition = INVALID_POSITION;
} }
swipeAdapterInterface.notifyDatasetChanged(); mAdapter.notifyDataSetChanged();
} }
@Override @Override
public void closeAllExcept(SwipeLayout layout) { public void closeAllExcept(SwipeLayout layout) {
for (SwipeLayout s : mShownLayouts) { for(SwipeLayout s : mShownLayouts){
if (s != layout) if(s != layout)
s.close();
}
}
@Override
public void closeAllItems() {
if (mode == Attributes.Mode.Multiple) {
mOpenPositions.clear();
} else {
mOpenPosition = INVALID_POSITION;
}
for (SwipeLayout s : mShownLayouts) {
s.close(); s.close();
} }
} }
@ -117,10 +124,10 @@ public class SwipeItemMangerImpl implements SwipeItemMangerInterface {
@Override @Override
public List<Integer> getOpenItems() { public List<Integer> getOpenItems() {
if (mode == Attributes.Mode.Multiple) { if(mode == Mode.Multiple){
return new ArrayList<Integer>(mOpenPositions); return new ArrayList<Integer>(mOpenPositions);
} else { }else{
return Collections.singletonList(mOpenPosition); return Arrays.asList(mOpenPosition);
} }
} }
@ -131,9 +138,9 @@ public class SwipeItemMangerImpl implements SwipeItemMangerInterface {
@Override @Override
public boolean isOpen(int position) { public boolean isOpen(int position) {
if (mode == Attributes.Mode.Multiple) { if(mode == Mode.Multiple){
return mOpenPositions.contains(position); return mOpenPositions.contains(position);
} else { }else{
return mOpenPosition == position; return mOpenPosition == position;
} }
} }
@ -150,7 +157,7 @@ public class SwipeItemMangerImpl implements SwipeItemMangerInterface {
} }
} }
class OnLayoutListener implements SwipeLayout.OnLayout { class OnLayoutListener implements SwipeLayout.OnLayout{
private int position; private int position;
@ -158,15 +165,15 @@ public class SwipeItemMangerImpl implements SwipeItemMangerInterface {
this.position = position; this.position = position;
} }
public void setPosition(int position) { public void setPosition(int position){
this.position = position; this.position = position;
} }
@Override @Override
public void onLayout(SwipeLayout v) { public void onLayout(SwipeLayout v) {
if (isOpen(position)) { if(isOpen(position)){
v.open(false, false); v.open(false, false);
} else { }else{
v.close(false, false); v.close(false, false);
} }
} }
@ -183,23 +190,23 @@ public class SwipeItemMangerImpl implements SwipeItemMangerInterface {
@Override @Override
public void onClose(SwipeLayout layout) { public void onClose(SwipeLayout layout) {
if (mode == Attributes.Mode.Multiple) { if(mode == Mode.Multiple){
mOpenPositions.remove(position); mOpenPositions.remove(position);
} else { }else{
mOpenPosition = INVALID_POSITION; mOpenPosition = INVALID_POSITION;
} }
} }
@Override @Override
public void onStartOpen(SwipeLayout layout) { public void onStartOpen(SwipeLayout layout) {
if (mode == Attributes.Mode.Single) { if(mode == Mode.Single) {
closeAllExcept(layout); closeAllExcept(layout);
} }
} }
@Override @Override
public void onOpen(SwipeLayout layout) { public void onOpen(SwipeLayout layout) {
if (mode == Attributes.Mode.Multiple) if (mode == Mode.Multiple)
mOpenPositions.add(position); mOpenPositions.add(position);
else { else {
closeAllExcept(layout); closeAllExcept(layout);
@ -207,7 +214,7 @@ public class SwipeItemMangerImpl implements SwipeItemMangerInterface {
} }
} }
public void setPosition(int position) { public void setPosition(int position){
this.position = position; this.position = position;
} }
} }

View File

@ -1,9 +1,5 @@
package com.daimajia.swipe.interfaces; package com.daimajia.swipe.interfaces;
public interface SwipeAdapterInterface { public interface SwipeAdapterInterface {
public int getSwipeLayoutResourceId(int position);
int getSwipeLayoutResourceId(int position);
void notifyDatasetChanged();
} }

View File

@ -1,29 +1,27 @@
package com.daimajia.swipe.interfaces; package com.daimajia.swipe.interfaces;
import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.util.Attributes; import com.daimajia.swipe.implments.SwipeItemMangerImpl;
import java.util.List; import java.util.List;
public interface SwipeItemMangerInterface { public interface SwipeItemMangerInterface {
void openItem(int position); public void openItem(int position);
void closeItem(int position); public void closeItem(int position);
void closeAllExcept(SwipeLayout layout); public void closeAllExcept(SwipeLayout layout);
void closeAllItems(); public List<Integer> getOpenItems();
List<Integer> getOpenItems(); public List<SwipeLayout> getOpenLayouts();
List<SwipeLayout> getOpenLayouts(); public void removeShownLayouts(SwipeLayout layout);
void removeShownLayouts(SwipeLayout layout); public boolean isOpen(int position);
boolean isOpen(int position); public SwipeItemMangerImpl.Mode getMode();
Attributes.Mode getMode(); public void setMode(SwipeItemMangerImpl.Mode mode);
void setMode(Attributes.Mode mode);
} }

View File

@ -1,9 +0,0 @@
package com.daimajia.swipe.util;
public class Attributes {
public enum Mode {
Single, Multiple
}
}

View File

@ -1,20 +1,15 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<declare-styleable name="SwipeLayout"> <declare-styleable name="SwipeLayout">
<attr name="drag_edge"> <attr name="drag_edge" format="enum">
<flag name="left" value="1" /> <enum name="left" value="0"/>
<flag name="right" value="2" /> <enum name="right" value="1"/>
<flag name="top" value="4" /> <enum name="top" value="2"/>
<flag name="bottom" value="8" /> <enum name="bottom" value="3"/>
</attr> </attr>
<attr name="leftEdgeSwipeOffset" format="dimension" />
<attr name="rightEdgeSwipeOffset" format="dimension" />
<attr name="topEdgeSwipeOffset" format="dimension" />
<attr name="bottomEdgeSwipeOffset" format="dimension" />
<attr name="show_mode" format="enum"> <attr name="show_mode" format="enum">
<enum name="lay_down" value="0" /> <enum name="lay_down" value="0"/>
<enum name="pull_out" value="1" /> <enum name="pull_out" value="1"/>
</attr> </attr>
<attr name="clickToClose" format="boolean" />
</declare-styleable> </declare-styleable>
</resources> </resources>