@@ -54,7 +54,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
5454     * 文件夹为空时展示的空视图 
5555     */  
5656    private  var  selectedCount:  AtomicInteger  =  AtomicInteger (0 )
57-     private  val  maxSelectable =  FilePickerManager .config.maxSelectable
57+     private  val  maxSelectable =  FilePickerManager .config? .maxSelectable  ? :   Int . MAX_VALUE 
5858    private  val  pickerConfig by lazy { FilePickerManager .config }
5959    private  val  fileListListener:  RecyclerViewListener  by lazy { getListener(rvContentList!! ) }
6060    private  val  navListener:  RecyclerViewListener  by lazy { getListener(rvNav!! ) }
@@ -65,7 +65,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
6565    private  var  rvNav:  RecyclerView ?  =  null 
6666    private  var  tvToolTitle:  TextView ?  =  null 
6767    override  fun  onCreate (savedInstanceState :  Bundle ? ) {
68-         setTheme(pickerConfig.themeId)
68+         setTheme(pickerConfig? .themeId  ? :   R .style. FilePickerThemeReply )
6969        super .onCreate(savedInstanceState)
7070        setContentView(R .layout.main_activity_for_file_picker)
7171        //  核验权限
@@ -138,11 +138,15 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
138138
139139        selectAllBtn =  findViewById<Button >(R .id.btn_selected_all_file_picker).apply  {
140140            setOnClickListener(this @FilePickerActivity)
141-             text =  FilePickerManager .config.selectAllText
141+             FilePickerManager .config?.selectAllText?.let  {
142+                 text =  it
143+             }
142144        }
143145        confirmBtn =  findViewById<Button >(R .id.btn_confirm_file_picker).apply  {
144146            setOnClickListener(this @FilePickerActivity)
145-             text =  FilePickerManager .config.confirmText
147+             FilePickerManager .config?.confirmText?.let  {
148+                 text =  it
149+             }
146150        }
147151
148152        rvContentList =  findViewById(R .id.rv_list_file_picker)
@@ -161,10 +165,11 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
161165            navDataSource =  FileUtils .produceNavDataSource(
162166                navDataSource,
163167                if  (navDataSource.isEmpty()) {
164-                     Environment .getExternalStorageDirectory().absolutePath 
168+                     rootFile.path 
165169                } else  {
166170                    navDataSource.last().dirPath
167-                 }
171+                 },
172+                 this @FilePickerActivity
168173            )
169174            initRv(listData, navDataSource)
170175            setLoadingFinish()
@@ -182,22 +187,24 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
182187                reloadList()
183188            }
184189            isRefreshing =  true 
185-             setColorSchemeColors(* resources.getIntArray(
186-                 when (pickerConfig.themeId){
187-                     R .style.FilePickerThemeCrane  -> {
188-                         R .array.crane_swl_colors
189-                     }
190-                     R .style.FilePickerThemeReply  -> {
191-                         R .array.reply_swl_colors
192-                     }
193-                     R .style.FilePickerThemeShrine  -> {
194-                         R .array.shrine_swl_colors
195-                     }
196-                     else  -> {
197-                         R .array.rail_swl_colors
190+             setColorSchemeColors(
191+                 * resources.getIntArray(
192+                     when  (pickerConfig?.themeId) {
193+                         R .style.FilePickerThemeCrane  ->  {
194+                             R .array.crane_swl_colors
195+                         }
196+                         R .style.FilePickerThemeReply  ->  {
197+                             R .array.reply_swl_colors
198+                         }
199+                         R .style.FilePickerThemeShrine  ->  {
200+                             R .array.shrine_swl_colors
201+                         }
202+                         else  ->  {
203+                             R .array.rail_swl_colors
204+                         }
198205                    }
199-                 } 
200-             )) 
206+                 ) 
207+             )
201208        }
202209    }
203210
@@ -258,24 +265,24 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
258265        val  item =  (recyclerAdapter as  me.rosuh.filepicker.adapter.BaseAdapter ).getItem(position)
259266        item ? :  return 
260267        val  file =  File (item.filePath)
261-         if  (! file.exists()){
268+         if  (! file.exists())  {
262269            return 
263270        }
264271        when  (view.id) {
265272            R .id.item_list_file_picker ->  {
266273                if  (file.isDirectory) {
267-                     (rvNav?.adapter as ?  FileNavAdapter )?.let {
274+                     (rvNav?.adapter as ?  FileNavAdapter )?.let   {
268275                        saveCurrPos(it.data.last(), position)
269276                    }
270277                    //  如果是文件夹,则进入
271278                    enterDirAndUpdateUI(item)
272279                } else  {
273-                     FilePickerManager .config.fileItemOnClickListener.onItemClick(recyclerAdapter, view, position)
280+                     FilePickerManager .config? .fileItemOnClickListener? .onItemClick(recyclerAdapter, view, position)
274281                }
275282            }
276283            R .id.item_nav_file_picker ->  {
277284                if  (file.isDirectory) {
278-                     (rvNav?.adapter as ?  FileNavAdapter )?.let {
285+                     (rvNav?.adapter as ?  FileNavAdapter )?.let   {
279286                        saveCurrPos(it.data.last(), position)
280287                    }
281288                    //  如果是文件夹,则进入
@@ -295,11 +302,11 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
295302    /* *
296303     * 保存当前文件夹被点击项,下次进入时将滑动到此 
297304     */  
298-     private  fun  saveCurrPos (item :  FileNavBeanImpl ? , position :  Int ){
305+     private  fun  saveCurrPos (item :  FileNavBeanImpl ? , position :  Int )  {
299306        item?.run  {
300307            currPosMap[filePath] =  position
301308            (rvContentList?.layoutManager as ?  LinearLayoutManager )?.let  {
302-                 currOffsetMap.put(filePath, it.findViewByPosition(position)?.top? : 0 )
309+                 currOffsetMap.put(filePath, it.findViewByPosition(position)?.top  ? :   0 )
303310            }
304311        }
305312    }
@@ -316,7 +323,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
316323        val  item =  (recyclerAdapter as  FileListAdapter ).getItem(position)
317324        item ? :  return 
318325        val  file =  File (item.filePath)
319-         val  isSkipDir =  FilePickerManager .config.isSkipDir
326+         val  isSkipDir =  FilePickerManager .config? .isSkipDir  ? :   true 
320327        //  如果是文件夹并且没有略过文件夹
321328        if  (file.exists() &&  file.isDirectory &&  isSkipDir) return 
322329        val  cb =  view.findViewById<CheckBox >(R .id.cb_list_file_picker)
@@ -325,12 +332,12 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
325332            cb.isChecked ->  {
326333                //  当前被选中,现在取消选中
327334                selectedCount.decrementAndGet()
328-                 FilePickerManager .config.fileItemOnClickListener.onItemLongClick(recyclerAdapter, view, position)
335+                 FilePickerManager .config? .fileItemOnClickListener? .onItemLongClick(recyclerAdapter, view, position)
329336            }
330337            isCanSelect() ->  {
331338                //  新增选中项情况
332339                selectedCount.incrementAndGet()
333-                 FilePickerManager .config.fileItemOnClickListener.onItemLongClick(recyclerAdapter, view, position)
340+                 FilePickerManager .config? .fileItemOnClickListener? .onItemLongClick(recyclerAdapter, view, position)
334341            }
335342            else  ->  {
336343                //  新增失败的情况
@@ -352,7 +359,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
352359        position :  Int 
353360    ) {
354361        when  (view.id) {
355-             R .id.btn_nav_file_picker  ->  {
362+             R .id.tv_btn_nav_file_picker  ->  {
356363                val  item =  (recyclerAdapter as  FileNavAdapter ).getItem(position)
357364                item ? :  return 
358365                enterDirAndUpdateUI(item)
@@ -361,7 +368,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
361368                val  item =  (recyclerAdapter as  FileListAdapter ).getItem(position)
362369                item ? :  return 
363370                //  文件夹直接进入
364-                 if  (item.isDir &&  pickerConfig.isSkipDir) {
371+                 if  (item.isDir &&  pickerConfig? .isSkipDir  !=   false ) {
365372                    enterDirAndUpdateUI(item)
366373                    return 
367374                }
@@ -422,7 +429,11 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
422429            listAdapter?.data =  FileUtils .suspendProduceListDataSource(nextFiles, this @FilePickerActivity)
423430
424431            //  更新导航栏的数据集
425-             navDataSource =  FileUtils .produceNavDataSource(ArrayList (navAdapter!! .data), fileBean.filePath)
432+             navDataSource =  FileUtils .produceNavDataSource(
433+                 ArrayList (navAdapter!! .data),
434+                 fileBean.filePath,
435+                 this @FilePickerActivity
436+             )
426437            navAdapter?.data =  navDataSource
427438
428439            navAdapter!! .notifyDataSetChanged()
@@ -443,8 +454,8 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
443454    private  fun  notifyDataChangedForList (fileBean :  FileBean ) {
444455        rvContentList?.apply  {
445456            (layoutManager as ?  PosLinearLayoutManager )?.setTargetPos(
446-                 currPosMap[fileBean.filePath] ? : 0 ,
447-                 currOffsetMap[fileBean.filePath] ? : 0 
457+                 currPosMap[fileBean.filePath] ? :   0 ,
458+                 currOffsetMap[fileBean.filePath] ? :   0 
448459            )
449460            layoutAnimation =  AnimationUtils .loadLayoutAnimation(context, R .anim.layout_item_anim_file_picker)
450461            adapter?.notifyDataSetChanged()
@@ -466,17 +477,17 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
466477    override  fun  updateItemUI (isCheck :  Boolean ) {
467478        //  取消选中,并且选中数为 0
468479        if  (selectedCount.get() ==  0 ) {
469-             selectAllBtn!! .text =  pickerConfig.selectAllText
480+             selectAllBtn!! .text =  pickerConfig? .selectAllText  ? :  getString(string.file_picker_tv_select_all) 
470481            tvToolTitle?.text =  " " 
471482            return 
472483        }
473-         selectAllBtn!! .text =  pickerConfig.deSelectAllText
484+         selectAllBtn!! .text =  pickerConfig? .deSelectAllText  ? :  getString(string.file_picker_tv_select_all) 
474485        tvToolTitle!! .text = 
475486            resources.getString(R .string.file_picker_selected_count, selectedCount.get())
476487    }
477488
478489    override  fun  onBackPressed () {
479-         if  ((rvNav?.adapter as ?  FileNavAdapter )?.itemCount? : 0  <=  1 ) {
490+         if  ((rvNav?.adapter as ?  FileNavAdapter )?.itemCount  ? :   0  <=  1 ) {
480491            super .onBackPressed()
481492        } else  {
482493            //  即将进入的 item 的索引
@@ -495,7 +506,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
495506                    selectedCount.set(0 )
496507                    for  (data in  listAdapter!! .data!! ) {
497508                        val  file =  File (data.filePath)
498-                         if  (pickerConfig.isSkipDir &&  file.exists() &&  file.isDirectory) {
509+                         if  (pickerConfig? .isSkipDir  !=   false  &&  file.exists() &&  file.isDirectory) {
499510                            continue 
500511                        }
501512                        data.setCheck(false )
@@ -505,7 +516,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
505516                    for  (i in  selectedCount.get() until listAdapter!! .data!! .size) {
506517                        val  data =  listAdapter!! .data!! [i]
507518                        val  file =  File (data.filePath)
508-                         if  (pickerConfig.isSkipDir &&  file.exists() &&  file.isDirectory) {
519+                         if  (pickerConfig? .isSkipDir  !=   false  &&  file.exists() &&  file.isDirectory) {
509520                            continue 
510521                        }
511522                        selectedCount.incrementAndGet()
@@ -550,7 +561,7 @@ class FilePickerActivity : BaseActivity(), View.OnClickListener, RecyclerViewLis
550561        var  count:  Long  =  0 
551562        for  (item in  listAdapter!! .data!! ) {
552563            val  file =  File (item.filePath)
553-             if  (pickerConfig.isSkipDir &&  file.exists() &&  file.isDirectory) {
564+             if  (pickerConfig? .isSkipDir  !=   false  &&  file.exists() &&  file.isDirectory) {
554565                continue 
555566            }
556567            count++ 
0 commit comments