我在JAVA中有以下代码:
byte[] data = new byte[1024];
int count;
int total = 0;
while ((count = input.read( data )) != -1) {
output.write( data, 0, count );
total += count;
publishProgress((int) (total * 100 / sizeFichero));
}
Run Code Online (Sandbox Code Playgroud)
我正在将我的应用更新为Kotlin,但是在WHILE中,我出现了错误。
在这段代码中,出现以下错误:
分配不是表达式,并且在此上下文中仅允许表达式
val data = ByteArray(1024)
var count: Int?
var total = 0
while ((count = input.read(data)) != -1) {
output.write( data, 0, count!! )
total += count!!
publishProgress((int) (total * 100 / sizeFichero));
}
Run Code Online (Sandbox Code Playgroud)
任何消除错误的建议。
我在Java中具有以下功能,需要将其转换为Kotlin。
@Override
public void afterTextChanged(Editable s) {
if (s != null && !"".equals(s.toString())) {
int position = (Integer) mHolder.numEdit.getTag();
// Saved to the data variable when the data changes
mData.get(position).put("list_item_inputvalue",
s.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这是我创建的等效Kotlin代码:
override fun afterTextChanged(s: Editable?) {
if (s != null && "" != s.toString()) {
val position = mHolder.numEdit!!.tag as Int
// Saved to the data variable when the data changes
mData?.get(position).put("list_item_inputvalue", s.toString())
}
}
Run Code Online (Sandbox Code Playgroud)
编译器不喜欢对的调用.put()。Java中的变量mData为:
private List<Map<String, String>> mData;
Run Code Online (Sandbox Code Playgroud)
和科特林:
var mData: List<Map<String, String>>? …Run Code Online (Sandbox Code Playgroud)