Created
June 15, 2022 14:15
-
-
Save axarlotwala/f81440e5c05b084ef5ae8031613fdbe2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class FileListAdapter( | |
private val context: Context, | |
private var mFilteredList: List<Document>, | |
selectedPaths: MutableList<Uri>, | |
selectedPathsSize: MutableList<Long>, | |
private val mListener: FileAdapterListener? | |
) : SelectionAdapter<FileListAdapter.FileViewHolder, Document>(mFilteredList, selectedPaths,selectedPathsSize), | |
Filterable { | |
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FileViewHolder { | |
val itemView = LayoutInflater.from(context).inflate(R.layout.item_doc_layout, parent, false) | |
return FileViewHolder(itemView) | |
} | |
// fun filterList(filterllist: List<Document>) { | |
// // below line is to add our filtered | |
// // list in our course array list. | |
// mFilteredList = filterllist | |
// // below line is to notify our adapter | |
// // as change in recycler view data. | |
// notifyDataSetChanged() | |
// } | |
override fun onBindViewHolder(holder: FileViewHolder, position: Int) { | |
val document = mFilteredList[position] | |
val drawable = document.fileType?.drawable ?: R.drawable.icon_file_unknown | |
holder.imageView.setImageResource(drawable) | |
if (drawable == R.drawable.icon_file_unknown || drawable == R.drawable.icon_file_pdf) { | |
holder.fileTypeTv.visibility = View.VISIBLE | |
holder.fileTypeTv.text = document.fileType?.title | |
} else { | |
holder.fileTypeTv.visibility = View.GONE | |
} | |
holder.fileNameTextView.text = document.name | |
holder.fileSizeTextView.text = Formatter.formatShortFileSize(context, java.lang.Long.parseLong( | |
(document.size | |
?: "0").toString() | |
)) | |
holder.itemView.setOnClickListener { onItemClicked(document, holder) } | |
holder.checkBox.setOnCheckedChangeListener(null) | |
holder.checkBox.setOnClickListener { onItemClicked(document, holder) } | |
holder.checkBox.isChecked = isSelected(document) | |
holder.checkBox.setOnCheckedChangeListener(object : SmoothCheckBox.OnCheckedChangeListener { | |
override fun onCheckedChanged(checkBox: SmoothCheckBox, isChecked: Boolean) { | |
toggleSelection(document) | |
if (isChecked) { | |
PickerManager.add(document.path,document.size,FilePickerConst.FILE_TYPE_DOCUMENT) | |
} else { | |
PickerManager.remove(document.path,document.size,FilePickerConst.FILE_TYPE_DOCUMENT) | |
} | |
} | |
}) | |
} | |
private fun onItemClicked(document: Document, holder: FileViewHolder) { | |
if (PickerManager.getMaxCount() == 1) { | |
PickerManager.add(document.path, document.size, FilePickerConst.FILE_TYPE_MEDIA) | |
// PickerManager.add(document.path, document.size,FilePickerConst.FILE_TYPE_DOCUMENT) | |
} else { | |
if (holder.checkBox.isChecked) { | |
holder.checkBox.setChecked(!holder.checkBox.isChecked, true) | |
} else if (PickerManager.shouldAdd()) { | |
holder.checkBox.setChecked(!holder.checkBox.isChecked, true) | |
} | |
} | |
mListener?.onItemSelected() | |
} | |
override fun getItemCount(): Int { | |
return mFilteredList.size | |
} | |
override fun getFilter(): Filter { | |
return object : Filter() { | |
override fun performFiltering(charSequence: CharSequence): FilterResults { | |
val charString = charSequence.toString() | |
if (charString.isEmpty()) { | |
mFilteredList = items | |
} else { | |
val filteredList = ArrayList<Document>() | |
for (document in items) { | |
if (document.name.toLowerCase().contains(charString)) { | |
filteredList.add(document) | |
} | |
} | |
mFilteredList = filteredList | |
} | |
val filterResults = FilterResults() | |
filterResults.values = mFilteredList | |
println("FileListAdapter.performFiltering"+filterResults.values) | |
return filterResults | |
} | |
@Suppress("UNCHECKED_CAST") | |
override fun publishResults( | |
charSequence: CharSequence, | |
filterResults: FilterResults | |
) { | |
mFilteredList = filterResults.values as List<Document> | |
notifyDataSetChanged() | |
} | |
} | |
} | |
class FileViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { | |
internal var fileTypeTv: TextView = itemView.findViewById(R.id.txtFilesType) | |
internal var checkBox: SmoothCheckBox = itemView.findViewById(R.id.checkbox) | |
internal var imageView: ImageView = itemView.findViewById(R.id.imgIvFiles) | |
internal var fileNameTextView: TextView = itemView.findViewById(R.id.txtFilesName) | |
internal var fileSizeTextView: TextView = itemView.findViewById(R.id.txtFilesSize) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment