| 编辑模式-1 | 编辑模式-2 |
| — | — |
| |
|
同时可以注意到两者编辑模式略有不同,在编辑模式-1下,可以做到修改,删除,背景色的设置,闹铃的添加,在编辑模式-2下仅仅能做到修改和删除。
左滑Note条目左滑部分关键代码:
首先需要新建一个滑动view类
public class MyScrollView extends ScrollView {
private ScrollViewListener scrollViewListener = null;
public MyScrollView(Context context) {
super(context);
}
public MyScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setOnScrollListener(ScrollViewListener scrollViewListener) {
this.scrollViewListener = scrollViewListener;
}
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
super.onScrollChanged(x, y, oldx, oldy);
if (scrollViewListener != null) {
if (oldy < y && ((y - oldy) > 15)) {
scrollViewListener.onScroll(y - oldy);
} else if (oldy > y && (oldy - y) > 15) {
scrollViewListener.onScroll(y - oldy);
}
}
}
//这一部分参考了github某个开源项目
public interface ScrollViewListener{//dy Y轴滑动距离
void onScroll(int dy);
}
}
设置完毕后在xml文件中即可设置应用:
<com.zc.memo.view.MyScrollView
adroid:id=“@+id/sv_main”
adroid:layout_width=“match_parent”
adroid:layout_height=“wrap_content”
adroid:background=“@drawable/border_bottom_null”>
<LinearLayout
adroid:layout_width=“match_parent”
adroid:layout_height=“wrap_content”
adroid:orientation=“vertical”>
<com.baoyz.swipemenulistview.SwipeMenuListView
adroid:id=“@+id/smlv_main”
adroid:layout_width=“match_parent”
adroid:layout_height=“match_parent”
adroid:descendantFocusability=“blocksDescendants”
adroid:divider=“@color/little_gray”
adroid:dividerHeight=“1dp”
adroid:background=“@null”
/>
</com.zc.memo.view.MyScrollView>
接着在activity中,初始化滑动窗口及滑动窗口菜单。
private void initView() {
data = new NoteManager(context).getNoteList();
smlvMain.setAdapter(new NoteAdapter(context,data));
smlvMain.setMenuCreator(new MySwipeMenuCreator(context));
smlvMain.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT);
new ListViewUtil().setListViewHeightBasedOnChildren(smlvMain);
svMain.setOnScrollListener(new MyScrollView.ScrollViewListener() {
@Override
public void onScroll(int dy) {
if (dy > 0) {
//下滑
showOrHideFab(false);
} else if (dy <= 0 ) {
//上滑
showOrHideFab(true);
}
}
});
viewListener();
emptyListCheck();
}
这里仅放上如何初始化滑动窗口的view,关于监听这个滑动窗口的逻辑代码在这里就不赘述了。
接下来讲一讲自定义NoteAdapter适配器来展示即使条目,首先继承BaseAdapter实现一个抽象类MyBaseAdapter该类可读取List列表的数据。
public abstract class MyBaseAdapter extends BaseAdapter {
Context context;
List data;
public MyBaseAdapter(Context context, List data) {
this.context = context;
this.data = data;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public int getCount() {
if(data==null) return 0;
return data.size();
}
}
接着在编写NoteAdapter类继承上类,初始化view, 将Note条目的各项信息展示出来,其中还自定义了一个viewHolder类,方便对xml文件中的各项组件进行绑定编辑。
public class NoteAdapter extends MyBaseAdapter {
public NoteAdapter(Context context, List data) {
super(context, data);
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
if(view==null){
viewHolder=new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(context);
view = inflater.inflate(R.layout.item_main_list, viewGroup, false);
viewHolder.tv_lv_mon