小编Kra*_*tos的帖子

Kotlin 浮点数 2 位小数转换为字符串且不损失精度

在 Android-Kotlin 中,我从后端获取浮点数(例如 num = 10000000.47),当我尝试对其进行 String.format 并将该数字添加到我的balanceTextview 中时,它会显示指数(例如 1.0E10)。

我想正常显示数字,不带指数,保留两位小数。(没有精度损失!)

尝试使用 DecimalFormat("#.##") 但它对我没有帮助。也许我做错了什么?

num = 10000000.47f
 val dec = DecimalFormat("#.##")
 var result = dec.format(num)

my result is: 10000000
It losts my decimal places
Run Code Online (Sandbox Code Playgroud)

android kotlin

9
推荐指数
1
解决办法
2万
查看次数

Kotlin “when” 不带中断(java 中 switch case 具有的选项)

当我写的时候:

num = 3
switch (num){
        case num < 2:
            Log.d("int", "3");
        case num > 2:
            Log.d("int", "2");
        case num > 0 :
            Log.d("int", "1");
        case num > 40:
            Log.d("int", "10");
    }
Run Code Online (Sandbox Code Playgroud)

这将打印案例 2 和案例 3。

我想在 kotlin 中做同样的事情,而不是在这种情况下使用多个 if/else 语句。When{} 对我没有帮助,因为据我所知,当我们输入大小写时它有一个强制中断,并且它不会进一步遍历大小写。有谁知道这个问题的好解决方案吗?

android kotlin

9
推荐指数
1
解决办法
4740
查看次数

Android卸载应用程序与清除所有数据(不仅仅是缓存)

通常,当我在为 Android 编码时遇到一些奇怪的问题时,我会卸载应用程序或清除所有数据(长按应用程序..),希望删除缓存并使其正常工作。

我想知道这两件事之间有什么区别,有什么区别吗?我相信我不需要卸载应用程序。删除所有数据会让我的应用程序焕然一新,就像妈妈生下的婴儿一样,对吗?这甚至比卸载/安装更好,因为此过程有时不会清除所有数据/缓存。

因此,如果我在这里得到确认,我将停止执行卸载/安装过程,而只清除数据,从长远来看,这将为我节省大量时间。

请给我一些解释,谢谢!

android

5
推荐指数
1
解决办法
4396
查看次数

如何创建RecyclerView拖放(交换2个项目位置版本)

我有 ItemTouchHelper 类,它使用滑动和拖放来执行操作。但我想改变拖放行为。它应该交换 2 个元素的位置,第一个元素是我拖动的,另一个元素是放置在其上的。我想交换拖放位置的项目。不要改变两者之间所有项目的位置。

怎么做

这是我的拖放课程

public class ItemTouchHelper extends 
androidx.recyclerview.widget.ItemTouchHelper.Callback {

private Drawable icon;
private Context context;
private ColorDrawable background;
private final ItemTouchHelperListener dragDropListener;

public ItemTouchHelper(Context context, Drawable icon,
                       ItemTouchHelperListener dragDropListener) {
    this.icon = icon;
    this.dragDropListener = dragDropListener;
    this.context = context;
    this.background = new ColorDrawable(context.getResources().getColor(R.color.deleteItem));
}

@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView,
                        @NonNull RecyclerView.ViewHolder viewHolder,
                        float dX, float dY,
                        int actionState, boolean isCurrentlyActive) {
    super.onChildDraw(c, recyclerView, viewHolder, dX,
            dY, actionState, isCurrentlyActive);
    View itemView = viewHolder.itemView; …
Run Code Online (Sandbox Code Playgroud)

java android drag-and-drop android-recyclerview itemtouchhelper

4
推荐指数
2
解决办法
5464
查看次数

初始化一个没有初始值的 kotlin MutableStateFlow

我正在学习 kotlin flow 并慢慢地将我公司应用程序中的代码从 livedata 转换为 kotlin flow。所以我有疑问:

在我的视图模型中,我有这样的 livedata 变量“状态”:

var status: MutableLiveData = MutableLiveData()

我在 MainActivity 中观察到了它。

现在我想用 Flow 做同样的事情。我转换了所有发射/收集部件和其他部件,一切正常,但有一个问题。这是声明我的变量状态的一部分:

var status: MutableStateFlow<Status> = MutableStateFlow() -> 这段代码给出了错误。我需要传递括号中的参数值

所以我必须这样写:

var status: MutableStateFlow<Status> = MutableStateFlow(Status.Failure("adding value even though I don't want to")) 
Run Code Online (Sandbox Code Playgroud)

谁能解释一下,有没有什么方法可以像以前一样在 livedata 中初始化它而不提供初始值?谢谢

android kotlin kotlin-flow

4
推荐指数
1
解决办法
1万
查看次数

使缓存无效与重建项目

由于我已经了解到Android studio中的重建项目也执行清理项目,现在我想知道“无效缓存/重新启动”是否也执行重建项目?

我相对经常使用这个命令,因为 android studio 有时会产生自己的问题,所以我想优化这个命令的使用

android android-studio

2
推荐指数
1
解决办法
2311
查看次数

Android Kotlin 函数具有多个可选参数,仅在特定位置使用参数调用函数

所以我有这个函数,它有 8 个可选参数(是的,我知道有这么多参数是不好的做法,这是遗留代码:D)。

事情是这样的:

private fun function(
    rightImage: Int = 0,
    background: Int = R.drawable.account_item_bg,
    leftImage: Int = 0,
    translation: String? = null,
    name: String? = null,
    age: String? = null,
    length: String? = null,
    duration: String? = null)
Run Code Online (Sandbox Code Playgroud)

现在在我的代码中,我想调用这个函数并只给它最后一个参数(持续时间)。我不关心其他人。

但现在要称呼它,我会这样做:

function(0, R.drawable.account_item_bg, 0, null, null, null, null, 1800)
Run Code Online (Sandbox Code Playgroud)

在编写这段代码时,我只是想,如果能够选择仅在特定位置发送参数(fe 参数 6,或最后一个参数),而不是重复所有可选参数,那会很酷。

有没有这样的选择,有人知道吗?谢谢

android kotlin

1
推荐指数
1
解决办法
1547
查看次数