在 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) 当我写的时候:
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 编码时遇到一些奇怪的问题时,我会卸载应用程序或清除所有数据(长按应用程序..),希望删除缓存并使其正常工作。
我想知道这两件事之间有什么区别,有什么区别吗?我相信我不需要卸载应用程序。删除所有数据会让我的应用程序焕然一新,就像妈妈生下的婴儿一样,对吗?这甚至比卸载/安装更好,因为此过程有时不会清除所有数据/缓存。
因此,如果我在这里得到确认,我将停止执行卸载/安装过程,而只清除数据,从长远来看,这将为我节省大量时间。
请给我一些解释,谢谢!
我有 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
我正在学习 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 studio中的重建项目也执行清理项目,现在我想知道“无效缓存/重新启动”是否也执行重建项目?
我相对经常使用这个命令,因为 android studio 有时会产生自己的问题,所以我想优化这个命令的使用
所以我有这个函数,它有 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,或最后一个参数),而不是重复所有可选参数,那会很酷。
有没有这样的选择,有人知道吗?谢谢