diff --git a/app/src/main/java/io/legado/app/ui/importbook/ImportBookAdapter.kt b/app/src/main/java/io/legado/app/ui/importbook/ImportBookAdapter.kt index fde0fba88..d872dd169 100644 --- a/app/src/main/java/io/legado/app/ui/importbook/ImportBookAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/importbook/ImportBookAdapter.kt @@ -5,10 +5,14 @@ import androidx.documentfile.provider.DocumentFile import io.legado.app.R import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.SimpleRecyclerAdapter +import io.legado.app.constant.AppConst +import io.legado.app.utils.StringUtils +import io.legado.app.utils.gone import io.legado.app.utils.invisible import io.legado.app.utils.visible import kotlinx.android.synthetic.main.item_import_book.view.* import org.jetbrains.anko.sdk27.listeners.onClick +import java.util.* class ImportBookAdapter(context: Context, val callBack: CallBack) : @@ -20,9 +24,18 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : if (item.isDirectory) { iv_icon.visible() cb_select.invisible() + ll_brief.gone() + tv_sub_count.visible() + tv_sub_count.text = + context.getString(R.string.nb_file_sub_count, item.listFiles().size) } else { iv_icon.invisible() cb_select.visible() + ll_brief.visible() + tv_sub_count.gone() + tv_tag.text = item.name?.substringAfterLast(".") + tv_size.text = StringUtils.toSize(item.length()) + tv_date.text = AppConst.DATE_FORMAT.format(Date(item.lastModified())) } tv_name.text = item.name onClick { diff --git a/app/src/main/java/io/legado/app/utils/StringUtils.kt b/app/src/main/java/io/legado/app/utils/StringUtils.kt index 95096c087..46053cad8 100644 --- a/app/src/main/java/io/legado/app/utils/StringUtils.kt +++ b/app/src/main/java/io/legado/app/utils/StringUtils.kt @@ -2,12 +2,15 @@ package io.legado.app.utils import android.annotation.SuppressLint import android.text.TextUtils.isEmpty +import java.text.DecimalFormat import java.text.ParseException import java.text.SimpleDateFormat import java.util.* import java.util.regex.Matcher import java.util.regex.Pattern import kotlin.math.abs +import kotlin.math.log10 +import kotlin.math.pow object StringUtils { private const val HOUR_OF_DAY = 24 @@ -97,6 +100,19 @@ object StringUtils { return "" } + fun toSize(length: Long): String { + if (length <= 0) return "0" + val units = arrayOf("b", "kb", "M", "G", "T") + //计算单位的,原理是利用lg,公式是 lg(1024^n) = nlg(1024),最后 nlg(1024)/lg(1024) = n。 + //计算单位的,原理是利用lg,公式是 lg(1024^n) = nlg(1024),最后 nlg(1024)/lg(1024) = n。 + val digitGroups = + (log10(length.toDouble()) / log10(1024.0)).toInt() + //计算原理是,size/单位值。单位值指的是:比如说b = 1024,KB = 1024^2 + //计算原理是,size/单位值。单位值指的是:比如说b = 1024,KB = 1024^2 + return DecimalFormat("#,##0.##") + .format(length / 1024.0.pow(digitGroups.toDouble())) + " " + units[digitGroups] + } + @SuppressLint("DefaultLocale") fun toFirstCapital(str: String): String { return str.substring(0, 1).toUpperCase() + str.substring(1) diff --git a/app/src/main/res/layout/item_import_book.xml b/app/src/main/res/layout/item_import_book.xml index 4beb7b6a0..882274b2d 100644 --- a/app/src/main/res/layout/item_import_book.xml +++ b/app/src/main/res/layout/item_import_book.xml @@ -62,6 +62,9 @@ android:paddingStart="5dp" android:paddingEnd="5dp" android:text="TXT" + android:maxLines="1" + android:maxWidth="50dp" + app:abt_radius="2dp" tools:ignore="HardcodedText,RtlHardcoded" />