blob: a0f3a9b7ddc2d4ab99ba137434cde268ca35230c [file] [log] [blame]
package com.airbnb.lottie.samples
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.fragment_choose_asset.view.*
import kotlinx.android.synthetic.main.view_holder_file.view.*
class ChooseAssetDialogFragment : DialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = LayoutInflater.from(context)
.inflate(R.layout.fragment_choose_asset, container, false)
dialog.setTitle("Choose an Asset")
view!!.recyclerView.adapter = AssetsAdapter()
return view
}
override fun onStart() {
super.onStart()
dialog.window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
}
internal inner class AssetsAdapter : RecyclerView.Adapter<StringViewHolder>() {
private val files = context.assets.list("").filter { it.toLowerCase().endsWith(".json") }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): StringViewHolder =
StringViewHolder(parent)
override fun onBindViewHolder(holder: StringViewHolder, position: Int) =
holder.bind(files[position])
override fun getItemCount() = files.size
}
internal inner class StringViewHolder(parent: ViewGroup) : RecyclerView.ViewHolder(
parent.inflate(R.layout.view_holder_file, false)) {
fun bind(fileName: String) {
itemView.title.text = fileName
itemView.setOnClickListener {
targetFragment.onActivityResult(targetRequestCode, Activity.RESULT_OK,
Intent().putExtra(AnimationFragment.EXTRA_ANIMATION_NAME, fileName))
dismiss()
}
}
}
companion object {
internal fun newInstance(): ChooseAssetDialogFragment {
return ChooseAssetDialogFragment()
}
}
}