Android-DraggableGridViewPager
- https://github.com/zzhouj/Android-DraggableGridViewPager
介绍:
仿zaker效果的拖拽排序。可以动态设置列数,动态增加或者减少item,当一页填满自动增加到下一页,当页数大于1,可以左右翻页。运行效果:
使用说明:
xml:
1
2
3
4
5
6
7
8
9
10
|
<com.coco.draggablegridviewpager.DraggableGridViewPager android:id= "@+id/draggable_grid_view_pager" android:layout_width= "match_parent" android:layout_height= "match_parent" android:paddingBottom= "20dp" android:paddingLeft= "20dp" android:paddingRight= "60dp" android:paddingTop= "20dp" > </com.coco.draggablegridviewpager.DraggableGridViewPager> |
定义adapter:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
private ArrayAdapter<String> mAdapter; // ... mAdapter = new ArrayAdapter<String>( this , 0) { @Override public View getView(int position, View convertView, ViewGroup parent) { final String text = getItem(position); if (convertView == null ) { convertView = (TextView) getLayoutInflater().inflate(R.layout.draggable_grid_item, null ); } ((TextView) convertView).setText(text); return convertView; } }; |
添加Listener:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
@Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super .onCreate(savedInstanceState); setContentView(R.layout.draggable_grid_view_pager_test); mDraggableGridViewPager = (DraggableGridViewPager) findViewById(R.id.draggable_grid_view_pager); // ... mDraggableGridViewPager.setAdapter(mAdapter); mDraggableGridViewPager.setOnPageChangeListener( new OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { Log.v(TAG, "onPageScrolled position=" + position + ", positionOffset=" + positionOffset + ", positionOffsetPixels=" + positionOffsetPixels); } @Override public void onPageSelected(int position) { Log.i(TAG, "onPageSelected position=" + position); } @Override public void onPageScrollStateChanged(int state) { Log.d(TAG, "onPageScrollStateChanged state=" + state); } }); mDraggableGridViewPager.setOnItemClickListener( new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { showToast(((TextView) view).getText().toString()); } }); mDraggableGridViewPager.setOnItemLongClickListener( new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { showToast(((TextView) view).getText().toString() + " long clicked!!!" ); return true ; } }); mDraggableGridViewPager.setOnRearrangeListener( new OnRearrangeListener() { @Override public void onRearrange(int oldIndex, int newIndex) { Log.i(TAG, "OnRearrangeListener.onRearrange from=" + oldIndex + ", to=" + newIndex); String item = mAdapter.getItem(oldIndex); mAdapter.setNotifyOnChange( false ); mAdapter.remove(item); mAdapter.insert(item, newIndex); mAdapter.notifyDataSetChanged(); } }); // ... } |