带拖放可移动的分页网格:PagedDragDropGrid

jopen 10年前

一个Android ViewGroup,实现了一个拖放移动项目的分页网格。支持 Android 2.2 (API 8) 以上。

用法:

定义一个适配器符合接口 PagedDragDropGridAdapter.java

public interface PagedDragDropGridAdapter {        // Automatic child distribution      public final static int AUTOMATIC = -1;         // Delete drop zone location TOP      public final static int TOP = 1;        // Delete drop zone location BOTTOM      public final static int BOTTOM = 2;        /**       * Used to create the paging       *        * @return the page count       */      public int pageCount();        /**       * Returns the count of item in a page       *        * @param page index       * @return item count for page       */      public int itemCountInPage(int page);        /**       * Returns the view for the item in the page       *        * @param page index       * @param item index       * @return the view        */      public View view(int page, int index);        /**       * The fixed row count (AUTOMATIC for automatic computing)       *        * @return row count or AUTOMATIC       */      public int rowCount();        /**       * The fixed column count (AUTOMATIC for automatic computing)       *        * @return column count or AUTOMATIC       */      public int columnCount();        /**       * Prints the layout in Log.d();       */      public void printLayout();        /**       * Swaps two items in the item list in a page       *        * @param pageIndex       * @param itemIndexA       * @param itemIndexB       */      public void swapItems(int pageIndex, int itemIndexA, int itemIndexB);        /**       * Moves an item in the page on the left of provided the page       *        * @param pageIndex       * @param itemIndex       */      public void moveItemToPreviousPage(int pageIndex, int itemIndex);        /**       * Moves an item in the page on the right of provided the page       *        * @param pageIndex       * @param itemIndex       */      public void moveItemToNextPage(int pageIndex, int itemIndex);          /**       * deletes the item in page and at position       *        * @param pageIndex       * @param itemIndex       */      public void deleteItem(int pageIndex, int itemIndex);        /**        * Returns the delete drop zone location.         *        * @return TOP or BOTTOM.        */      public int deleteDropZoneLocation();        /**       * Tells the grid to show or not the remove drop zone when moving an item       */      public boolean showRemoveDropZone();  }

layout example.xml

<ca.laplanete.mobile.pageddragdropgrid.PagedDragDropGrid xmlns:android="http://schemas.android.com/apk/res/android"      android:id="@+id/gridview"      android:layout_width="fill_parent"      android:layout_height="fill_parent"/>

ExampleActivity.java

setContentView(R.layout.example);  PagedDragDropGrid gridview = (PagedDragDropGrid) findViewById(R.id.gridview);         gridview.setAdapter(new ExamplePagedDragDropGridAdapter(this));    /* Optionally set an onClickListener */  gridview.setClickListener(this);    /* Optionally set an setOnPageChangedListener */  gridview.setOnPageChangedListener(new OnPageChangedListener() {                  @Override      public void onPageChanged(PagedDragDropGrid sender, int newPageNumber) {              Toast.makeText(ExampleActivity.this, "Page changed to page " + newPageNumber, Toast.LENGTH_SHORT).show();                          }      });

项目主页:http://www.open-open.com/lib/view/home/1390735358117