fix #3
This commit is contained in:
parent
3ac67e06c7
commit
c9588c0ae7
|
|
@ -7,6 +7,7 @@ import android.view.View;
|
|||
import android.widget.AdapterView;
|
||||
import android.widget.GridView;
|
||||
|
||||
import com.daimajia.swipe.SwipeAdapter;
|
||||
import com.daimajia.swipedemo.adapter.GridViewAdapter;
|
||||
|
||||
public class GridViewExample extends Activity{
|
||||
|
|
@ -16,7 +17,9 @@ public class GridViewExample extends Activity{
|
|||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.gridview);
|
||||
final GridView gridView = (GridView)findViewById(R.id.gridview);
|
||||
gridView.setAdapter(new GridViewAdapter(this));
|
||||
GridViewAdapter adapter = new GridViewAdapter(this);
|
||||
adapter.setMode(SwipeAdapter.Mode.Multiple);
|
||||
gridView.setAdapter(adapter);
|
||||
gridView.setSelected(false);
|
||||
gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import android.widget.AbsListView;
|
|||
import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
|
||||
import com.daimajia.swipe.SwipeAdapter;
|
||||
import com.daimajia.swipedemo.adapter.ListViewAdapter;
|
||||
|
||||
public class ListViewExample extends Activity {
|
||||
|
|
@ -26,6 +27,7 @@ public class ListViewExample extends Activity {
|
|||
mListView = (ListView)findViewById(R.id.listview);
|
||||
mAdapter = new ListViewAdapter(this);
|
||||
mListView.setAdapter(mAdapter);
|
||||
mAdapter.setMode(SwipeAdapter.Mode.Single);
|
||||
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,16 @@ import java.util.Set;
|
|||
|
||||
public abstract class SwipeAdapter extends BaseAdapter {
|
||||
|
||||
public static enum Mode {
|
||||
Single, Multiple
|
||||
};
|
||||
|
||||
private Mode mode = Mode.Single;
|
||||
|
||||
public final int INVALID_POSITION = -1;
|
||||
private Set<Integer> mOpenPositions = new HashSet<Integer>();
|
||||
private int mOpenPosition = INVALID_POSITION;
|
||||
private SwipeLayout mPrevious;
|
||||
|
||||
/**
|
||||
* return the {@link com.daimajia.swipe.SwipeLayout} resource id, int the view item.
|
||||
|
|
@ -63,6 +72,25 @@ public abstract class SwipeAdapter extends BaseAdapter {
|
|||
return v;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* set open mode
|
||||
* @param mode
|
||||
*/
|
||||
public void setMode(Mode mode){
|
||||
if(mode == Mode.Multiple){
|
||||
mOpenPositions.clear();
|
||||
}else{
|
||||
mOpenPosition = INVALID_POSITION;
|
||||
}
|
||||
this.mode = mode;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public Mode getMode(){
|
||||
return mode;
|
||||
}
|
||||
|
||||
class ValueBox {
|
||||
OnLayoutListener onLayoutListener;
|
||||
SwipeMemory swipeMemory;
|
||||
|
|
@ -89,10 +117,18 @@ public abstract class SwipeAdapter extends BaseAdapter {
|
|||
|
||||
@Override
|
||||
public void onLayout(SwipeLayout v) {
|
||||
if(mOpenPositions.contains(position))
|
||||
v.open(false);
|
||||
else{
|
||||
v.close(false);
|
||||
if(mode == Mode.Multiple){
|
||||
if(mOpenPositions.contains(position))
|
||||
v.open(false);
|
||||
else{
|
||||
v.close(false);
|
||||
}
|
||||
}else{
|
||||
if(mOpenPosition == position){
|
||||
v.open(false);
|
||||
}else{
|
||||
v.close(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -107,7 +143,15 @@ public abstract class SwipeAdapter extends BaseAdapter {
|
|||
|
||||
@Override
|
||||
public void onClose(SwipeLayout layout) {
|
||||
mOpenPositions.remove(position);
|
||||
if(mode == Mode.Multiple)
|
||||
mOpenPositions.remove(position);
|
||||
else{
|
||||
if(position == mOpenPosition){
|
||||
mOpenPosition = INVALID_POSITION;
|
||||
mPrevious = null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -118,7 +162,16 @@ public abstract class SwipeAdapter extends BaseAdapter {
|
|||
|
||||
@Override
|
||||
public void onOpen(SwipeLayout layout) {
|
||||
mOpenPositions.add(position);
|
||||
if(mode == Mode.Multiple)
|
||||
mOpenPositions.add(position);
|
||||
else{
|
||||
if(mOpenPosition != position){
|
||||
if(mPrevious != null)
|
||||
mPrevious.close();
|
||||
}
|
||||
mOpenPosition = position;
|
||||
mPrevious = layout;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -131,4 +184,6 @@ public abstract class SwipeAdapter extends BaseAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -529,6 +529,10 @@ public class SwipeLayout extends FrameLayout {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link android.view.View.OnLayoutChangeListener} added in API 11.
|
||||
* I need to support it from API 8.
|
||||
*/
|
||||
public interface OnLayout{
|
||||
public void onLayout(SwipeLayout v);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue