0

ImageViewクラスへの拡張機能があります。渡された引数に従って画像をロードする方法について、いくつかのロジックを実装しました。しかし、ここで私は立ち往生しています。これらfit()centerCrop()などはピカソの を返しRequestCreatorますが、これは後で (引数に基づいて) 変更するために構築することもできません (パッケージ プライベート コンストラクターがあります)。これを行う方法がわかりません。私がこれを行うことができた唯一の方法は、以下に示すとおりです (注意してください: 目が出血し始めます)。それを行うための「通常の」「良い」方法が見つかりません。

だから私はあなたに尋ねています:これを行うにはどうすればよいですか?

fun ImageView.load(resId: Int, centerCrop: Boolean = true, fit: Boolean = true) {

// Improve this, there must be a better way

if (centerCrop && fit) {
    Picasso.get()
            .load(resId)
            .fit()
            .centerCrop()
            .into(this)
} else if (centerCrop && !fit) {
    Picasso.get()
            .load(resId)
            .centerCrop()
            .into(this)
} else if (!centerCrop && fit) {
    Picasso.get()
            .load(resId)
            .fit()
            .into(this)
} else if (!centerCrop && !fit) {
    Picasso.get()
            .load(resId)
            .into(this)
}

}

4

1 に答える 1

2

Kotlinsも機能することができます:

fun ImageView.load(resId: Int, centerCrop: Boolean = true, fit: Boolean = true) {
    Picasso.get()
        .load(resId)
        .also { if (centerCrop) it.centerCrop() }
        .also { if (fit) it.fit() }
        .into(this)
}
于 2019-01-09T20:39:32.387 に答える