public static void DropAllCollections() { IMongoMapperConfiguration config = MongoMapperConfiguration.GetConfig(""); var colNames = CollectionsManager.GetCollentionNames("XXX"); foreach (string colName in colNames) { if (!colName.ToUpper().Contains("SYSTEM") && !colName.Contains("MongoMapperConfig")) { Mapper.MongoMapperHelper.Db("XXX").DropCollectionAsync(colName); } } foreach (var collectionElement in config.CustomCollectionConfig) { var collection = (MongoMapperConfigurationElement)collectionElement; if (collection.Name != "TestConf1") { foreach (string colName in CollectionsManager.GetCollentionNames(collection.Name)) { if (!colName.ToUpper().Contains("SYSTEM") && !colName.Contains("MongoMapperConfig")) { Mapper.MongoMapperHelper.Db(collection.Name).DropCollectionAsync(colName); } } } } }
public void onItemClick(int position) { Recommend.RecommendBooks books = mAdapter.getItem(position); if (books.path.EndsWith(Constant.SUFFIX_TXT)) { // TXT new AlertDialog.Builder(this) .SetTitle("提示") .SetMessage(Java.Lang.String.Format(GetString( Resource.String.book_detail_is_joined_the_book_shelf), books.title)) .SetPositiveButton("确定", (sender, e) => { // 拷贝到缓存目录 FileUtils.fileChannelCopy(new File(books.path), new File(FileUtils.getChapterPath(books._id, 1))); // 加入书架 if (CollectionsManager.getInstance().add(books)) { mRecyclerView.showTipViewAndDelayClose(Java.Lang.String.Format(GetString( Resource.String.book_detail_has_joined_the_book_shelf), books.title)); // 通知 EventManager.refreshCollectionList(); } else { mRecyclerView.showTipViewAndDelayClose("书籍已存在"); } var dialog = sender as AlertDialog; dialog?.Dismiss(); }) .SetNegativeButton("取消", (sender, e) => { var dialog = sender as AlertDialog; dialog?.Dismiss(); }) .Show(); } else if (books.path.EndsWith(Constant.SUFFIX_PDF)) { // PDF // TODO: ReadPDFActivity.start(this, books.path); ToastUtils.showSingleToast("等待开发中"); } else if (books.path.EndsWith(Constant.SUFFIX_EPUB)) { // EPub // TODO: ReadEPubActivity.start(this, books.path); ToastUtils.showSingleToast("等待开发中"); } else if (books.path.EndsWith(Constant.SUFFIX_CHM)) { // CHM // TODO: ReadCHMActivity.start(this, books.path); ToastUtils.showSingleToast("等待开发中"); } }
public void showRecommendList(List <Recommend.RecommendBooks> list) { mAdapter.clear(); mAdapter.addAll(list); // 推荐列表默认加入收藏 foreach (var bean in list) { //TO DO 此处可优化:批量加入收藏->加入前需先判断是否收藏过 CollectionsManager.getInstance().add(bean); } }
/// <summary> /// 刷新收藏图标 /// </summary> private void refreshCollectionIcon() { if (CollectionsManager.getInstance().isCollected(recommendBooks._id)) { initCollection(false); } else { initCollection(true); } }
public override void initDatas() { var recommendBooksStr = Intent.GetStringExtra(INTENT_BEAN); recommendBooks = JsonConvert.DeserializeObject <Recommend.RecommendBooks>(recommendBooksStr);; bookId = recommendBooks._id; isFromSD = Intent.GetBooleanExtra(INTENT_SD, false); if (Intent.ActionView.Equals(Intent.Action)) { String filePath = Uri.Decode(Intent.DataString.Replace("file://", "")); String fileName; if (filePath.LastIndexOf(".") > filePath.LastIndexOf("/")) { fileName = filePath.Substring(filePath.LastIndexOf("/") + 1, filePath.LastIndexOf(".")); } else { fileName = filePath.Substring(filePath.LastIndexOf("/") + 1); } CollectionsManager.getInstance().remove(fileName); // 转存 File desc = FileUtils.createWifiTranfesFile(fileName); FileUtils.fileChannelCopy(new File(filePath), desc); // 建立 recommendBooks = new Recommend.RecommendBooks(); recommendBooks.isFromSD = true; recommendBooks._id = fileName; recommendBooks.title = fileName; isFromSD = true; } MessageBus.Default.Register <DownloadProgress>(showDownProgress); MessageBus.Default.Register <DownloadMessage>(downloadMessage); showDialog(); mTvBookReadTocTitle.Text = (recommendBooks.title); //mTtsPlayer = TTSPlayerUtils.getTTSPlayer(); //ttsConfig = TTSPlayerUtils.getTtsConfig(); intentFilter.AddAction(Intent.ActionBatteryChanged); intentFilter.AddAction(Intent.ActionTimeTick); CollectionsManager.getInstance().setRecentReadingTime(bookId); System.Reactive.Linq.Observable.Timer(new TimeSpan(0, 0, 1)) // 1s .Subscribe(_ => { //延迟1秒刷新书架 EventManager.refreshCollectionList(); }); }
public override bool OnKeyDown([GeneratedEnum] Keycode keyCode, KeyEvent e) { switch (keyCode) { case Keycode.Back: if (mTocListPopupWindow != null && mTocListPopupWindow.IsShowing) { mTocListPopupWindow.Dismiss(); gone(mTvBookReadTocTitle); visible(mTvBookReadReading, mTvBookReadCommunity, mTvBookReadChangeSource); return(true); } else if (isVisible(rlReadAaSet)) { gone(rlReadAaSet); return(true); } else if (isVisible(mLlBookReadBottom)) { hideReadBar(); return(true); } else if (!CollectionsManager.getInstance().isCollected(bookId)) { showJoinBookShelfDialog(recommendBooks); return(true); } break; case Keycode.Menu: toggleReadBar(); return(true); case Keycode.VolumeDown: if (Settings.VolumeFlipEnable) { return(true); } break; case Keycode.VolumeUp: if (Settings.VolumeFlipEnable) { return(true); } break; default: break; } return(base.OnKeyDown(keyCode, e)); }
public ActionResult Index() { this.FillSeoInformation(UrlBuilder.COLLECTIONS); ViewBag.Scripts = new List <string>() { "collections.js" }; var model = CollectionsManager.SeasonalCollections(this.CurrentBrand); return(View(PathFromView("Collections"), model)); }
public override void onRefresh() { base.onRefresh(); Gone(llBatchManagement); List <Recommend.RecommendBooks> data = CollectionsManager.getInstance().getCollectionListBySort(); mAdapter.clear(); mAdapter.addAll(data); //不加下面这句代码会导致,添加本地书籍的时候,部分书籍添加后直接崩溃 //报错:Scrapped or attached views may not be recycled. isScrap:false isAttached:true mAdapter.NotifyDataSetChanged(); mRecyclerView.setRefreshing(false); }
public UserTopGenerator(string osuApiKey, MapCacher mapCacher) { if (mapCacher == null) { throw new ArgumentNullException(nameof(mapCacher)); } if (string.IsNullOrEmpty(osuApiKey)) { throw new ArgumentException("osuApiKey is required."); } _osuApi = new OsuApi(osuApiKey); _mapCacher = mapCacher; _collectionManager = new CollectionsManager(_mapCacher.Beatmaps); }
public async Task WhenGetCollectionsAsyncCalledContainsExpectedResult(string id) { Collection mediaCollection = new Collection(); var mock = new Mock <IOauthRequestSender>(); mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <Collection> >())).Returns(Task.FromResult(mediaCollection)); var manager = new CollectionsManager(mock.Object); var collection = await manager.GetCollectionAsync(id); mock.Verify(reqSenderMock => reqSenderMock.SendRequestAsync(It.Is <Request <Collection> >(req => req.Uri == $"/api/v4/collections/{id}/" && req.HTTPMethod == HttpMethod.Get))); Assert.AreEqual(mediaCollection, collection); }
public async Task WhenGetMediaAsyncCalledContainsExpectedResult(string id) { var query = new GetMediaQuery(id); IList <string> mediaList = new List <string>(); var mock = new Mock <IOauthRequestSender>(); mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <IList <string> > >())).Returns(Task.FromResult(mediaList)); var manager = new CollectionsManager(mock.Object); var mediaOfCollection = await manager.GetMediaAsync(query); mock.Verify(reqSenderMock => reqSenderMock.SendRequestAsync(It.Is <Request <IList <string> > >(req => req.Uri == $"/api/v4/collections/{id}/media/" && req.HTTPMethod == HttpMethod.Get))); Assert.AreEqual(mediaList, mediaOfCollection); }
public async Task WhenRemoveMediaAsyncCalledContainsExpectedResult(string id, string mediaId) { var query = new RemoveMediaQuery(id, new[] { mediaId }); IList <string> mediaList = new List <string>(); var mock = new Mock <IOauthRequestSender>(); mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <string> >())).Returns(Task.FromResult(string.Empty)); var manager = new CollectionsManager(mock.Object); await manager.RemoveMediaAsync(query); mock.Verify(reqSenderMock => reqSenderMock.SendRequestAsync(It.Is <Request <string> >(req => req.Uri == $"/api/v4/collections/{id}/media/" && req.HTTPMethod == HttpMethod.Delete && ((RemoveMediaQuery)req.Query).MediaIds.Contains(mediaId)))); }
public async Task WhenShareAsyncCalledContainsExpectedResult(string id, string emailAddresses) { IList <string> recipients = emailAddresses.Split(','); var query = new ShareQuery(id, recipients, SharingPermission.View); IList <string> mediaList = new List <string>(); var mock = new Mock <IOauthRequestSender>(); mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <string> >())).Returns(Task.FromResult(string.Empty)); var manager = new CollectionsManager(mock.Object); await manager.ShareCollectionAsync(query); mock.Verify(reqSenderMock => reqSenderMock.SendRequestAsync(It.Is <Request <string> >(req => req.Uri == $"/api/v4/collections/{id}/share/" && req.HTTPMethod == HttpMethod.Post && ((ShareQuery)req.Query).Recipients.Count == recipients.Count && ((ShareQuery)req.Query).Permission == SharingPermission.View))); }
public void onClickJoinCollection() { if (!isJoinedCollections) { if (recommendBooks != null) { CollectionsManager.getInstance().add(recommendBooks); ToastUtils.showToast(Java.Lang.String.Format(GetString( Resource.String.book_detail_has_joined_the_book_shelf), recommendBooks.title)); initCollection(false); } } else { CollectionsManager.getInstance().remove(recommendBooks._id); ToastUtils.showToast(Java.Lang.String.Format(GetString( Resource.String.book_detail_has_remove_the_book_shelf), recommendBooks.title)); initCollection(true); } }
public async Task WhenGetCollectionsAsyncCalledContainsExpectedResult() { var query = new GetCollectionsQuery() { Limit = 50, Page = 1 }; IList <Collection> mediaCollections = new List <Collection>(); var mock = new Mock <IOauthRequestSender>(); mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <IList <Collection> > >())).Returns(Task.FromResult(mediaCollections)); var manager = new CollectionsManager(mock.Object); var collectionList = await manager.GetCollectionsAsync(query); mock.Verify(reqSenderMock => reqSenderMock.SendRequestAsync(It.Is <Request <IList <Collection> > >(req => req.Uri == $"/api/v4/collections/" && req.HTTPMethod == HttpMethod.Get && req.Query == query))); Assert.AreEqual(mediaCollections, collectionList); }
/** * 显示加入书架对话框 * * @param bean */ private void showJoinBookShelfDialog(Recommend.RecommendBooks bean) { new AlertDialog.Builder(mContext) .SetTitle(GetString(Resource.String.book_read_add_book)) .SetMessage(GetString(Resource.String.book_read_would_you_like_to_add_this_to_the_book_shelf)) .SetPositiveButton(GetString(Resource.String.book_read_join_the_book_shelf), (sender, e) => { var dialog = sender as AlertDialog; dialog.Dismiss(); bean.recentReadingTime = FormatUtils.getCurrentTimeString(FormatUtils.FORMAT_DATE_TIME); CollectionsManager.getInstance().add(bean); Finish(); }) .SetNegativeButton(GetString(Resource.String.book_read_not), (sender, e) => { var dialog = sender as AlertDialog; dialog.Dismiss(); Finish(); }) .Create() .Show(); }
/// <summary> /// 显示删除本地缓存对话框 /// </summary> /// <param name="removeList"></param> private void showDeleteCacheDialog(List <Recommend.RecommendBooks> removeList) { bool[] selected = { true }; new AlertDialog.Builder(Activity) .SetTitle(Activity.GetString(Resource.String.remove_selected_book)) .SetMultiChoiceItems(new String[] { Activity.GetString(Resource.String.delete_local_cache) }, selected, (sender, e) => { selected[0] = e.IsChecked; }) .SetPositiveButton(Activity.GetString(Resource.String.confirm), (sender, e) => { var dialog = sender as AlertDialog; dialog?.Dismiss(); // DoInBackground ShowDialog(); Task.Factory .StartNew(() => CollectionsManager.getInstance().removeSome(removeList, selected[0]) ) .ContinueWith(task => Activity.RunOnUiThread(() => { mRecyclerView.showTipViewAndDelayClose("成功移除书籍"); foreach (Recommend.RecommendBooks bean in removeList) { mAdapter.remove(bean); } if (IsViewVisible(llBatchManagement)) { //批量管理完成后,隐藏批量管理布局并刷新页面 goneBatchManagementAndRefreshUI(); } HideDialog(); } )); }) .SetNegativeButton(Activity.GetString(Resource.String.cancel), (sender, e) => { }) .Create().Show(); }
private void syncBookShelf() { List <Recommend.RecommendBooks> list = CollectionsManager.getInstance().getCollectionList(); List <IObservable <BookMixAToc.MixToc> > observables = new List <IObservable <BookMixAToc.MixToc> >(); if (list != null && list.Any()) { foreach (var bean in list) { if (!bean.isFromSD) { IObservable <BookMixAToc.MixToc> fromNetWork = BookApi.Instance.getBookMixAToc(bean._id, "chapters") .Select(s => s.mixToc); observables.Add(fromNetWork); } } } else { ToastUtils.showSingleToast("书架空空如也..."); syncBookShelfCompleted(); return; } Observable.Merge(observables) .SubscribeOn(DefaultScheduler.Instance) .ObserveOn(Application.SynchronizationContext) .Subscribe(data => { String lastChapter = data.chapters[data.chapters.Count() - 1].title; CollectionsManager.getInstance().setLastChapterAndLatelyUpdate(data.book, lastChapter, data.chaptersUpdated); }, e => { LogUtils.e("onError: " + e); showError(); }, () => { syncBookShelfCompleted(); }); }
static void Main(string[] args) { try { if (System.Threading.Thread.CurrentThread.CurrentCulture.Name.StartsWith("zh")) { language = JsonConvert.DeserializeObject <Language>(Encoding.UTF8.GetString(Properties.Resources.zh_tw)); //假如是中文語系,就使用中文 } else { language = new Language(); //否則,英文 } } catch (Exception) { language = new Language(); /*這邊是當跳出錯誤時,使用英文。正常來說是不會有錯誤才對,但有次比賽拿來做測試的時候出了錯誤,也抓不到點,就先認定是語系的問題了*/ } Console.Title = language.AppTitle; if (OsuPathResolver.Instance.OsuIsRunning) { FormatWrite(language.DetectionOsuIsRunning, ConsoleColor.Red); } OpenFileDialog openFileDialog = new OpenFileDialog(); //選擇收藏夾檔案的對話方塊 openFileDialog.AddExtension = true; openFileDialog.CheckFileExists = true; openFileDialog.CheckPathExists = true; openFileDialog.DefaultExt = "json"; openFileDialog.Filter = language.OpenFileFilter; openFileDialog.Multiselect = false; if (openFileDialog.ShowDialog() == DialogResult.Cancel) { Exit(language.PleaseSelectCollection, true); } JsonData collectionData = null; try { collectionData = JsonConvert.DeserializeObject <JsonData>(File.ReadAllText(openFileDialog.FileName)); } //讀取收藏夾資料 catch (Exception) { } if (collectionData == null || collectionData.collection_data == null) { Exit(language.ReadCollectionFail, true); } string osuPath = OsuPathResolver.Instance.GetOsuDir((path) => { //第一次會先偵測osu的路徑,然後提示使用者是否正確 var dialogResult = MessageBox.Show( string.Format( language.ConfirmOsuPath, Environment.NewLine + path, Environment.NewLine), "", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); return(dialogResult == DialogResult.Yes); }, (text) => { FolderBrowserDialog dialog = new FolderBrowserDialog(); //假如是錯誤的,那就開個資料夾選擇對話框,讓使用者自行選擇osu的路徑 dialog.ShowNewFolderButton = false; dialog.Description = language.PleaseSelectOsuPath; dialog.RootFolder = Environment.SpecialFolder.MyComputer; if (dialog.ShowDialog() == DialogResult.OK && Directory.Exists(dialog.SelectedPath)) { return(dialog.SelectedPath); } return(""); }); if (osuPath == string.Empty || !Directory.Exists(osuPath)) { Exit(language.NeedValidOsuPath, true); } if (!osuPath.EndsWith("\\")) { osuPath += "\\"; } FormatWrite(string.Format(language.OsuPath, osuPath), ConsoleColor.Yellow); OsuFileIo.OsuSettings.Load(osuPath); OsuFileIo.OsuDatabase.Load(osuPath + "osu!.db"); //載入osu的資料庫來抓取songs的資料夾路徑 List <BeatmapData> needDownloadBeatmapList = new List <BeatmapData>(); var collectionManager = new CollectionsManager(OsuFileIo.OsuDatabase.LoadedMaps.Beatmaps); Collection collection; //初始化目前osu所有的Beatmap collectionManager.EditCollection(CollectionEditArgs.AddCollections(OsuFileIo.CollectionLoader.LoadCollection(osuPath + "collection.db"))); //載入原先的收藏夾 foreach (CollectionData item in collectionData.collection_data) { FormatWrite(string.Format(language.CollectionName, item.collection_name), ConsoleColor.Yellow); if (collectionManager.CollectionNameExists(item.collection_name)) { collection = collectionManager.GetCollectionByName(item.collection_name); //如果收藏夾已經存在,就讀取出來 } else { collection = new Collection(OsuFileIo.LoadedMaps) { Name = item.collection_name } }; //否則新建一個 foreach (BeatmapData item2 in item.beatmap_data) { if (!collection.AllBeatmaps().Any((x) => x.MapId == item2.beatmap_id)) //讀取收藏夾內的Beatmap,如果要匯入的收藏夾Beatmap ID不存在於收藏夾內,那就新增進去 { FormatWrite(string.Format(language.AddBeatmapToCollection, item2.beatmap_name), ConsoleColor.Green); collection.AddBeatmapByHash(item2.beatmap_md5); //新增Beatmap,使用Hash新增法 if (!OsuFileIo.OsuDatabase.LoadedMaps.Beatmaps.Any((x) => x.MapId == item2.beatmap_id)) //如果osu資料庫裡面沒有該Beatmap { needDownloadBeatmapList.Add(item2); //就新增到下載清單內 FormatWrite(language.NeedDownloadBeatmap, ConsoleColor.Cyan); } } } collectionManager.EditCollection(CollectionEditArgs.RemoveCollections(new Collections() { collection })); //先把收藏夾移除 collectionManager.EditCollection(CollectionEditArgs.AddCollections(new Collections() { collection })); //再把收藏夾新增,以達成重整的效果 } if (needDownloadBeatmapList.Count != 0) //如果下載清單數量不為0,就進入下載程序 { FormatWrite(language.DownloadBeatmapInfo, ConsoleColor.Green); CookieAwareWebClient cookieAwareWebClient = new CookieAwareWebClient(); //CollectionManager提供的class,可以讓WebClient使用cookie的功能 string username, password; do { Console.Write(language.OsuUsername); username = Console.ReadLine(); Console.Write(language.OsuPassword); password = ""; do { ConsoleKeyInfo key = Console.ReadKey(true); if (key.Key != ConsoleKey.Backspace && key.Key != ConsoleKey.Enter) { password += key.KeyChar; Console.Write("*"); } else { if (key.Key == ConsoleKey.Backspace && password.Length > 0) { password = password.Substring(0, (password.Length - 1)); Console.Write("\b \b"); } else if (key.Key == ConsoleKey.Enter) { Console.WriteLine(); break; } } } while (true); try { if (!cookieAwareWebClient.Login(loginAddress, string.Format(loginDataStr, username, password)).Contains("I don't have an account")) { break; } } //登入失敗的話,回傳的網頁資料會有I don't have an account catch (Exception ex) { Exit(string.Format(language.LoginErrorElseReason, ex.Message)); } FormatWrite(language.LoginError, ConsoleColor.Red); } while (true); bool downloadVideo = MessageBox.Show(language.DownloadBeatmapWithVideo, "", MessageBoxButtons.YesNo) == DialogResult.Yes; //提示下載時是否包含背景影片 needDownloadBeatmapList.ForEach((item) => { string savePath = OsuFileIo.OsuSettings.CustomBeatmapDirectoryLocation + item.beatmap_setid + " " + StripInvalidCharacters(item.beatmap_name) + ".osz"; //存放路徑: osu的songs資料夾 + BeatmapSet ID + BeatmapSet Name if (!File.Exists(savePath)) { FormatWrite(string.Format(language.DownloadBeatmapName, Path.GetFileName(savePath)), ConsoleColor.Green); try { File.WriteAllBytes(savePath, cookieAwareWebClient.DownloadData("https://osu.ppy.sh/d/" + item.beatmap_setid + (downloadVideo ? "n" : ""))); } catch (Exception ex) { Console.WriteLine(string.Format(language.DownloadFali, ex.Message)); } } else { FormatWrite(string.Format(language.DownloadDone, Path.GetFileName(savePath)), ConsoleColor.Yellow); } }); } string backupName = "collection.db-" + DateTime.Now.ToFileTime() + ".bak"; //備份舊的收藏夾檔案 File.Move(osuPath + "collection.db", osuPath + backupName); //然後覆蓋新的收藏夾檔案 Console.WriteLine(string.Format(language.BackupCollectionTo, osuPath + backupName)); Console.WriteLine(language.WritingNewCollection); OsuFileIo.CollectionLoader.SaveOsuCollection(collectionManager.LoadedCollections, osuPath + "collection.db"); if (OsuPathResolver.Instance.OsuIsRunning) { if (needDownloadBeatmapList.Count != 0) { Exit(language.WriteDone1); } else { Exit(language.WriteDone2); } } else { if (needDownloadBeatmapList.Count != 0) { Exit(language.WriteDone3); } else { Exit(language.WriteDone4); } } }
/// <summary> /// 显示长按对话框 /// </summary> /// <param name="position"></param> private void showLongClickDialog(int position) { var isTop = CollectionsManager.getInstance().isTop(mAdapter.getItem(position)._id); string[] items; EventHandler <DialogClickEventArgs> handler; if (mAdapter.getItem(position).isFromSD) { items = Resources.GetStringArray(Resource.Array.recommend_item_long_click_choice_local); handler = (sender, e) => { var dialog = (AlertDialog)sender; var which = e.Which; switch (which) { case 0: //置顶、取消置顶 CollectionsManager.getInstance().top(mAdapter.getItem(position)._id, !isTop); break; case 1: //删除 List <Recommend.RecommendBooks> removeList = new List <Recommend.RecommendBooks>(); removeList.Add(mAdapter.getItem(position)); showDeleteCacheDialog(removeList); break; case 2: //批量管理 showBatchManagementLayout(); break; default: break; } dialog.Dismiss(); }; } else { items = Resources.GetStringArray(Resource.Array.recommend_item_long_click_choice); handler = (sender, e) => { var dialog = (AlertDialog)sender; var which = e.Which; switch (which) { case 0: //置顶、取消置顶 CollectionsManager.getInstance().top(mAdapter.getItem(position)._id, !isTop); break; case 1: // 书籍详情 BookDetailActivity.startActivity(Activity, mAdapter.getItem(position)._id); break; case 2: //移入养肥区 mRecyclerView.showTipViewAndDelayClose("正在拼命开发中..."); break; case 3: //缓存全本 if (mAdapter.getItem(position).isFromSD) { mRecyclerView.showTipViewAndDelayClose("本地文件不支持该选项哦"); } else { ShowDialog(); getTocList(mAdapter.getItem(position)._id); } break; case 4: //删除 List <Recommend.RecommendBooks> removeList = new List <Recommend.RecommendBooks>(); removeList.Add(mAdapter.getItem(position)); showDeleteCacheDialog(removeList); break; case 5: //批量管理 showBatchManagementLayout(); break; default: break; } dialog.Dismiss(); }; } if (isTop) { items[0] = GetString(Resource.String.cancle_top); } new AlertDialog.Builder(Activity) .SetTitle(mAdapter.getItem(position).title) .SetItems(items, handler) //.SetNegativeButton(text:string.Empty, handler:(sender, e) => { // // 不干任何事情 //}) .Create().Show(); }