|
|
|
@ -7,12 +7,18 @@ import android.view.ViewGroup |
|
|
|
|
import android.widget.FrameLayout |
|
|
|
|
import io.legado.app.R |
|
|
|
|
import io.legado.app.databinding.ViewLoadMoreBinding |
|
|
|
|
import io.legado.app.lib.dialogs.alert |
|
|
|
|
import io.legado.app.utils.invisible |
|
|
|
|
import io.legado.app.utils.visible |
|
|
|
|
|
|
|
|
|
@Suppress("unused") |
|
|
|
|
class LoadMoreView(context: Context, attrs: AttributeSet? = null) : FrameLayout(context, attrs) { |
|
|
|
|
private val binding = ViewLoadMoreBinding.inflate(LayoutInflater.from(context), this) |
|
|
|
|
private var errorMsg = "" |
|
|
|
|
|
|
|
|
|
var isLoading = false |
|
|
|
|
private set |
|
|
|
|
|
|
|
|
|
var hasMore = true |
|
|
|
|
private set |
|
|
|
|
|
|
|
|
@ -22,23 +28,26 @@ class LoadMoreView(context: Context, attrs: AttributeSet? = null) : FrameLayout( |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun startLoad() { |
|
|
|
|
isLoading = true |
|
|
|
|
binding.tvText.invisible() |
|
|
|
|
binding.rotateLoading.show() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun stopLoad() { |
|
|
|
|
isLoading = false |
|
|
|
|
binding.rotateLoading.hide() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun hasMore() { |
|
|
|
|
errorMsg = "" |
|
|
|
|
hasMore = true |
|
|
|
|
binding.tvText.invisible() |
|
|
|
|
binding.rotateLoading.show() |
|
|
|
|
startLoad() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun noMore(msg: String? = null) { |
|
|
|
|
stopLoad() |
|
|
|
|
errorMsg = "" |
|
|
|
|
hasMore = false |
|
|
|
|
binding.rotateLoading.hide() |
|
|
|
|
if (msg != null) { |
|
|
|
|
binding.tvText.text = msg |
|
|
|
|
} else { |
|
|
|
@ -48,10 +57,21 @@ class LoadMoreView(context: Context, attrs: AttributeSet? = null) : FrameLayout( |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun error(msg: String) { |
|
|
|
|
stopLoad() |
|
|
|
|
hasMore = false |
|
|
|
|
binding.rotateLoading.hide() |
|
|
|
|
binding.tvText.text = msg |
|
|
|
|
errorMsg = msg |
|
|
|
|
binding.tvText.text = context.getString(R.string.error_load_msg, "点击查看详情") |
|
|
|
|
binding.tvText.visible() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun showErrorDialog(): Boolean { |
|
|
|
|
if (errorMsg.isBlank()) { |
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
context.alert(R.string.error) { |
|
|
|
|
setMessage(errorMsg) |
|
|
|
|
} |
|
|
|
|
return true |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|