From 9d08dc34b689b4e9134ed04c84b4717b79675e1a Mon Sep 17 00:00:00 2001 From: Season 5 <2659337715@qq.com> Date: Sat, 21 Oct 2023 14:37:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NotesListAdapter.java | 268 ------------------------------------------ 1 file changed, 268 deletions(-) delete mode 100644 NotesListAdapter.java diff --git a/NotesListAdapter.java b/NotesListAdapter.java deleted file mode 100644 index 16e2a13..0000000 --- a/NotesListAdapter.java +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.micode.notes.ui; - -import android.content.Context; -import android.database.Cursor; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CursorAdapter; - -import net.micode.notes.data.Notes; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; - - -public class NotesListAdapter extends CursorAdapter { - private static final String TAG = "NotesListAdapter"; - private Context mContext; - private HashMap mSelectedIndex; - private int mNotesCount; //便签数 - private boolean mChoiceMode; //选择模式标记 - - /* - * 桌面widget的属性,包括编号和类型 - */ - public static class AppWidgetAttribute { - public int widgetId; - public int widgetType; - }; - - /* - * 函数功能:初始化便签链接器 - * 函数实现:根据传进来的内容设置相关变量 - */ - public NotesListAdapter(Context context) { - super(context, null); //父类对象置空 - mSelectedIndex = new HashMap(); //新建选项下标的hash表 - mContext = context; - mNotesCount = 0; - } - - @Override - /* - * 函数功能:新建一个视图来存储光标所指向的数据 - * 函数实现:使用兄弟类NotesListItem新建一个项目选项 - */ - public View newView(Context context, Cursor cursor, ViewGroup parent) { - return new NotesListItem(context); - } - - /* - * 函数功能:将已经存在的视图和鼠标指向的数据进行捆绑 - * 函数实现:如下注释 - */ - @Override - public void bindView(View view, Context context, Cursor cursor) { - if (view instanceof NotesListItem) { - //若view是NotesListItem的一个实例 - NoteItemData itemData = new NoteItemData(context, cursor); - ((NotesListItem) view).bind(context, itemData, mChoiceMode, - isSelectedItem(cursor.getPosition())); - //则新建一个项目选项并且用bind跟将view和鼠标,内容,便签数据捆绑在一起 - } - } - - /* - * 函数功能:设置勾选框 - * 函数实现:如下注释 - */ - public void setCheckedItem(final int position, final boolean checked) { - mSelectedIndex.put(position, checked); - //根据定位和是否勾选设置下标 - notifyDataSetChanged(); - //在修改后刷新activity - } - - /* - * 函数功能:判断单选按钮是否勾选 - */ - public boolean isInChoiceMode() { - return mChoiceMode; - } - - /* - * 函数功能:设置单项选项框 - * 函数实现:重置下标并且根据参数mode设置选项 - */ - public void setChoiceMode(boolean mode) { - mSelectedIndex.clear(); - mChoiceMode = mode; - } - - /* - * 函数功能:选择全部选项 - * 函数实现:如下注释 - */ - public void selectAll(boolean checked) { - Cursor cursor = getCursor(); - //获取光标位置 - for (int i = 0; i < getCount(); i++) { - if (cursor.moveToPosition(i)) { - if (NoteItemData.getNoteType(cursor) == Notes.TYPE_NOTE) { - setCheckedItem(i, checked); - } - } - } - //遍历所有光标可用的位置在判断为便签类型之后勾选单项框 - } - - /* - * 函数功能:建立选择项的下标列表 - * 函数实现:如下注释 - */ - public HashSet getSelectedItemIds() { - HashSet itemSet = new HashSet(); - //建立hash表 - for (Integer position : mSelectedIndex.keySet()) { - //遍历所有的关键 - if (mSelectedIndex.get(position) == true) { - //若光标位置可用 - Long id = getItemId(position); - if (id == Notes.ID_ROOT_FOLDER) { - //原文件不需要添加 - Log.d(TAG, "Wrong item id, should not happen"); - } else { - itemSet.add(id); - } - //则将id该下标假如选项集合中 - } - } - - return itemSet; - } - - /* - * 函数功能:建立桌面Widget的选项表 - * 函数实现:如下注释 - */ - public HashSet getSelectedWidget() { - HashSet itemSet = new HashSet(); - for (Integer position : mSelectedIndex.keySet()) { - if (mSelectedIndex.get(position) == true) { - Cursor c = (Cursor) getItem(position); - //以上4句和getSelectedItemIds一样,不再重复 - if (c != null) { - //光标位置可用的话就建立新的Widget属性并编辑下标和类型,最后添加到选项集中 - AppWidgetAttribute widget = new AppWidgetAttribute(); - NoteItemData item = new NoteItemData(mContext, c); - widget.widgetId = item.getWidgetId(); - widget.widgetType = item.getWidgetType(); - itemSet.add(widget); - /** - * Don't close cursor here, only the adapter could close it - */ - } else { - Log.e(TAG, "Invalid cursor"); - return null; - } - } - } - return itemSet; - } - - /* - * 函数功能:获取选项个数 - * 函数实现:如下注释 - */ - public int getSelectedCount() { - Collection values = mSelectedIndex.values(); - //首先获取选项下标的值 - if (null == values) { - return 0; - } - Iterator iter = values.iterator(); - //初始化叠加器 - int count = 0; - while (iter.hasNext()) { - if (true == iter.next()) { - //若value值为真计数+1 - count++; - } - } - return count; - } - - /* - * 函数功能:判断是否全部选中 - * 函数实现:如下注释 - */ - public boolean isAllSelected() { - int checkedCount = getSelectedCount(); - return (checkedCount != 0 && checkedCount == mNotesCount); - //获取选项数看是否等于便签的个数 - } - - /* - * 函数功能:判断是否为选项表 - * 函数实现:通过传递的下标来确定 - */ - public boolean isSelectedItem(final int position) { - if (null == mSelectedIndex.get(position)) { - return false; - } - return mSelectedIndex.get(position); - } - - - @Override - /* - * 函数功能:在activity内容发生局部变动的时候回调该函数计算便签的数量 - * 函数实现:如下注释 - */ - protected void onContentChanged() { - super.onContentChanged(); - //执行基类函数 - calcNotesCount(); - } - - @Override - /* - * 函数功能:在activity光标发生局部变动的时候回调该函数计算便签的数量 - */ - public void changeCursor(Cursor cursor) { - super.changeCursor(cursor); - //执行基类函数 - calcNotesCount(); - } - - /* - * 函数功能:计算便签数量 - * - */ - private void calcNotesCount() { - mNotesCount = 0; - for (int i = 0; i < getCount(); i++) { - //获取总数同时遍历 - Cursor c = (Cursor) getItem(i); - if (c != null) { - if (NoteItemData.getNoteType(c) == Notes.TYPE_NOTE) { - mNotesCount++; - //若该位置不为空并且文本类型为便签就+1 - } - } else { - Log.e(TAG, "Invalid cursor"); - return; - } - //否则报错 - } - } -}