android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_toStartOf=“@+id/iv_check”
android:ellipsize=“end”
android:singleLine=“true”
android:text=“@{notebook.title}”
android:textColor=“@color/black”
android:textSize=“16sp” />
<TextView
android:id=“@+id/tv_content”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_below=“@+id/tv_title”
android:layout_marginTop=“4dp”
android:layout_toStartOf=“@+id/iv_check”
android:ellipsize=“end”
android:maxLines=“3”
android:text=“@{notebook.content}”
android:textSize=“14sp” />
<ImageView
android:id=“@+id/iv_check”
android:layout_width=“24dp”
android:layout_height=“24dp”
android:layout_alignParentEnd=“true”
android:layout_centerVertical=“true”
android:layout_marginStart=“6dp”
android:src=“@{notebook.select ? ContextCompat.getDrawable(ivCheck.getContext(),R.mipmap.ic_selected) : ContextCompat.getDrawable(ivCheck.getContext(),R.mipmap.ic_select)}”
android:visibility=“@{isBatchDeletion ? View.VISIBLE : View.GONE}” />
还是老样子,图标去我源码里面拿。
③ 适配器修改
item布局改完了,下面是NotebookAdapter适配器。
这里我去掉了之前写的点击事件内部类。
④ 修改删除方法
之前写的NotebookDao中的删除方法是删除单个笔记的,那如果要删除多个呢?这里我们改成动态参数就行了。
就在后面加三个点就行了,这个表示你一个笔记可以,多个笔记也行。下面修改NotebookRepository中的deleteNotebook方法的参数,
然后再修改NotebookViewModel中的deleteNotebook方法中的参数。
⑤ 列表处理
现在就只剩下NotebookActivity中的代码没写了,首先在NotebookActivity增加变量,代码如下:
//笔记适配器
private NotebookAdapter notebookAdapter;
//笔记列表
private final List mList = new ArrayList<>();
//是否为批量删除
private boolean isBatchDeletion = false;
//是否全选
private boolean isAllSelected;
实现页面的点击监听。
控件监听
重写onClick方法。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_delete:
break;
case R.id.tv_all_selected:
break;
default:
break;
}
}
这里针对页面中底部布局中的两个TextView的点击,一个用于删除,一个用于全选和取消全选。这两个按钮的处理事件先不管它,先弄别的,这里我们先修改一下onResume中的代码:
这里之前的代码,我写到一个方法里面去了,新建一个initList方法。
/**
- 初始化列表
*/
private void initList() {
//适配器
notebookAdapter = new NotebookAdapter(mList);
//设置适配器
<