package com.roboo.like.netease.fragment; import java.util.LinkedList; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import com.roboo.like.netease.R; import com.roboo.like.netease.adapter.DSLVAdapter; import com.roboo.like.netease.dao.INewsCategoryDao; import com.roboo.like.netease.dao.impl.NewsCategoryDaoImpl; import com.roboo.like.netease.database.DBHelper; import com.roboo.like.netease.dragdroplistview.DragSortController; import com.roboo.like.netease.dragdroplistview.DragSortListView; import com.roboo.like.netease.model.NewsCategory; public class DSLVFragment extends ListFragment { DSLVAdapter mAdapter; private DragSortListView.DropListener onDrop = new DragSortListView.DropListener() { @Override public void drop(int from, int to) { if (from != to) { NewsCategory item = (NewsCategory) mAdapter.getItem(from); item.setNewsCategoryOrder(to); mAdapter.remove(item); mAdapter.insert(item, to); INewsCategoryDao newsCategoryDao = new NewsCategoryDaoImpl(new DBHelper(getActivity())); newsCategoryDao.updateNewsCategoryOrder(item.getNewsCategoryMD5(), to); } } }; private DragSortListView.RemoveListener onRemove = new DragSortListView.RemoveListener() { @Override public void remove(int which) { if (mAdapter.getCount() > 1) { NewsCategory item = (NewsCategory) mAdapter.getItem(which); mAdapter.remove(item); INewsCategoryDao newsCategoryDao = new NewsCategoryDaoImpl(new DBHelper(getActivity())); newsCategoryDao.updateNewsCategoryState(item.getNewsCategoryMD5(), false); } else { Toast.makeText(getActivity(), "至少保留一个栏目吧", Toast.LENGTH_SHORT).show(); mAdapter.notifyDataSetChanged(); } } }; protected int getLayout() { return R.layout.fragment_dslv_main; } protected int getItemLayout() { /* * if (removeMode == DragSortController.FLING_LEFT_REMOVE || removeMode * == DragSortController.SLIDE_LEFT_REMOVE) { return * R.layout.list_item_handle_right; } else */ if (removeMode == DragSortController.CLICK_REMOVE) { return R.layout.list_item_click_remove; } else { return R.layout.list_item_handle_left; } } private DragSortListView mDslv; private DragSortController mController; public int dragStartMode = DragSortController.ON_DOWN; public boolean removeEnabled = true; public int removeMode = DragSortController.CLICK_REMOVE; public boolean sortEnabled = true; public boolean dragEnabled = true; public static DSLVFragment newInstance(int headers, int footers) { DSLVFragment fragment = new DSLVFragment(); Bundle args = new Bundle(); args.putInt("headers", headers); args.putInt("footers", footers); fragment.setArguments(args); return fragment; } @Override public void onResume() { setListAdapter(); super.onResume(); } public DragSortController getController() { return mController; } public void setListAdapter() { INewsCategoryDao newsCategoryDao = new NewsCategoryDaoImpl(new DBHelper(getActivity())); LinkedList<NewsCategory> data = newsCategoryDao.getCustomedList(); if (null != data) { mAdapter = new DSLVAdapter(data, getActivity(), true); } setListAdapter(mAdapter); } /** * Called in onCreateView. Override this to provide a custom * DragSortController. */ public DragSortController buildController(DragSortListView dslv) { DragSortController controller = new DragSortController(dslv); controller.setDragHandleId(R.id.drag_handle); controller.setClickRemoveId(R.id.click_remove); controller.setRemoveEnabled(removeEnabled); controller.setSortEnabled(sortEnabled); controller.setDragInitMode(dragStartMode); controller.setRemoveMode(removeMode); return controller; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mDslv = (DragSortListView) inflater.inflate(getLayout(), container, false); mController = buildController(mDslv); mDslv.setFloatViewManager(mController); mDslv.setOnTouchListener(mController); mDslv.setDragEnabled(dragEnabled); return mDslv; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mDslv = (DragSortListView) getListView(); mDslv.setDropListener(onDrop); mDslv.setRemoveListener(onRemove); } }