change the files listview to recyclerview
This commit is contained in:
parent
9d9b987abf
commit
978b74adc1
7 changed files with 105 additions and 17 deletions
|
@ -1,23 +1,59 @@
|
|||
package com.simplemobiletools.filemanager.adapters
|
||||
|
||||
import android.content.Context
|
||||
import android.content.res.Resources
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.BaseAdapter
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import com.simplemobiletools.filemanager.R
|
||||
import com.simplemobiletools.filemanager.extensions.formatSize
|
||||
import com.simplemobiletools.filepicker.extensions.formatSize
|
||||
import com.simplemobiletools.filepicker.extensions.isGif
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem
|
||||
import kotlinx.android.synthetic.main.list_item.view.*
|
||||
import java.io.File
|
||||
|
||||
class ItemsAdapter(context: Context, private val mItems: List<FileDirItem>) : BaseAdapter() {
|
||||
class ItemsAdapter(val context: Context, private val mItems: List<FileDirItem>, val itemClick: (FileDirItem) -> Unit) :
|
||||
RecyclerView.Adapter<ItemsAdapter.ViewHolder>() {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
|
||||
val view = LayoutInflater.from(parent?.context).inflate(R.layout.list_item, parent, false)
|
||||
return ViewHolder(context, view, itemClick)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
holder.bindView(mItems[position])
|
||||
}
|
||||
|
||||
override fun getItemCount() = mItems.size
|
||||
|
||||
class ViewHolder(val context: Context, view: View, val itemClick: (FileDirItem) -> (Unit)) : RecyclerView.ViewHolder(view) {
|
||||
fun bindView(fileDirItem: FileDirItem) {
|
||||
itemView.item_name.text = fileDirItem.name
|
||||
|
||||
if (fileDirItem.isDirectory) {
|
||||
Glide.with(context).load(R.mipmap.directory).diskCacheStrategy(getCacheStrategy(fileDirItem)).centerCrop().crossFade().into(itemView.item_icon)
|
||||
itemView.item_details.text = getChildrenCnt(fileDirItem)
|
||||
} else {
|
||||
Glide.with(context).load(fileDirItem.path).diskCacheStrategy(getCacheStrategy(fileDirItem)).error(R.mipmap.file).centerCrop().crossFade().into(itemView.item_icon)
|
||||
itemView.item_details.text = fileDirItem.size.formatSize()
|
||||
}
|
||||
|
||||
itemView.setOnClickListener { itemClick(fileDirItem) }
|
||||
}
|
||||
|
||||
private fun getCacheStrategy(item: FileDirItem) = if (File(item.path).isGif()) DiskCacheStrategy.NONE else DiskCacheStrategy.RESULT
|
||||
|
||||
private fun getChildrenCnt(item: FileDirItem): String {
|
||||
val children = item.children
|
||||
return context.resources.getQuantityString(R.plurals.items, children, children)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*class ItemsAdapter(context: Context, private val mItems: List<FileDirItem>) : BaseAdapter() {
|
||||
private val mInflater: LayoutInflater
|
||||
private val mRes: Resources
|
||||
private val mContext: Context
|
||||
|
@ -78,3 +114,4 @@ class ItemsAdapter(context: Context, private val mItems: List<FileDirItem>) : Ba
|
|||
val details: TextView = view.item_details
|
||||
}
|
||||
}
|
||||
*/
|
|
@ -23,6 +23,7 @@ import com.simplemobiletools.filemanager.dialogs.RenameItemDialog
|
|||
import com.simplemobiletools.filepicker.asynctasks.CopyMoveTask
|
||||
import com.simplemobiletools.filepicker.extensions.*
|
||||
import com.simplemobiletools.filepicker.models.FileDirItem
|
||||
import com.simplemobiletools.filepicker.views.RecyclerViewDivider
|
||||
import com.simplemobiletools.fileproperties.dialogs.PropertiesDialog
|
||||
import kotlinx.android.synthetic.main.items_fragment.*
|
||||
import java.io.File
|
||||
|
@ -78,9 +79,11 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
|
|||
|
||||
mItems = newItems
|
||||
|
||||
val adapter = ItemsAdapter(context, mItems)
|
||||
val adapter = ItemsAdapter(context, mItems) {
|
||||
|
||||
}
|
||||
items_list.adapter = adapter
|
||||
items_list.onItemClickListener = this
|
||||
items_list.addItemDecoration(RecyclerViewDivider(context))
|
||||
items_list.setOnTouchListener(this)
|
||||
}
|
||||
|
||||
|
@ -315,17 +318,18 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
|
|||
}
|
||||
|
||||
private fun getSelectedItemIndexes(): List<Int> {
|
||||
val items = items_list.checkedItemPositions
|
||||
/*val items = items_list.checkedItemPositions
|
||||
val cnt = items.size()
|
||||
val selectedItems = (0..cnt - 1)
|
||||
.filter { items.valueAt(it) }
|
||||
.map { items.keyAt(it) }
|
||||
return selectedItems
|
||||
return selectedItems*/
|
||||
return ArrayList()
|
||||
}
|
||||
|
||||
private fun prepareForDeleting() {
|
||||
mToBeDeleted.clear()
|
||||
val items = items_list.checkedItemPositions
|
||||
/*val items = items_list.checkedItemPositions
|
||||
val cnt = items.size()
|
||||
var deletedCnt = 0
|
||||
for (i in 0..cnt - 1) {
|
||||
|
@ -337,7 +341,7 @@ class ItemsFragment : android.support.v4.app.Fragment(), AdapterView.OnItemClick
|
|||
}
|
||||
}
|
||||
|
||||
notifyDeletion(deletedCnt)
|
||||
notifyDeletion(deletedCnt)*/
|
||||
}
|
||||
|
||||
private fun notifyDeletion(cnt: Int) {
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package com.simplemobiletools.filemanager.views
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import com.simplemobiletools.filemanager.R
|
||||
|
||||
class RecyclerViewDivider(context: Context) : RecyclerView.ItemDecoration() {
|
||||
private val mDivider: Drawable
|
||||
|
||||
init {
|
||||
mDivider = context.resources.getDrawable(R.drawable.divider)
|
||||
}
|
||||
|
||||
override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
|
||||
val left = parent.paddingLeft
|
||||
val right = parent.width - parent.paddingRight
|
||||
|
||||
val childCount = parent.childCount
|
||||
for (i in 0..childCount - 1) {
|
||||
val child = parent.getChildAt(i)
|
||||
|
||||
val params = child.layoutParams as RecyclerView.LayoutParams
|
||||
|
||||
val top = child.bottom + params.bottomMargin
|
||||
val bottom = top + mDivider.intrinsicHeight
|
||||
|
||||
mDivider.setBounds(left, top, right, bottom)
|
||||
mDivider.draw(c)
|
||||
}
|
||||
}
|
||||
}
|
11
app/src/main/res/drawable/divider.xml
Normal file
11
app/src/main/res/drawable/divider.xml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<size
|
||||
android:width="1dp"
|
||||
android:height="1dp"/>
|
||||
|
||||
<solid android:color="@color/divider_grey"/>
|
||||
|
||||
</shape>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
android:id="@+id/items_holder"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/items_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
|
@ -10,13 +11,13 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ListView
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/items_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:choiceMode="multipleChoiceModal"
|
||||
android:clipToPadding="false"
|
||||
android:paddingLeft="@dimen/activity_margin"/>
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
|
||||
|
||||
</android.support.v4.widget.SwipeRefreshLayout>
|
||||
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:foreground="@drawable/selector">
|
||||
|
||||
<RelativeLayout
|
||||
|
|
|
@ -7,4 +7,5 @@
|
|||
<color name="lightGrey">#33000000</color>
|
||||
<color name="pressed_item_foreground">#08000000</color>
|
||||
<color name="activated_item_foreground">#44888888</color>
|
||||
<color name="divider_grey">#44cccccc</color>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue