如何将Android Kotlin代码转换为Java代码 class MainAdapter:RecyclerView.Adapter(){ 变量列表:list=arrayListOf() 变量跟踪器:SelectionTracker?=null 初始化{ SetHassTableId(真) } 覆盖BindViewHolder(holder:ViewHolder,位置:Int){ val编号=列表[位置] 追踪器?,让我来{ holder.bind(编号,it.isSelected(position.toLong())) } }
我想了解这个例子。如何将Android Kotlin代码转换为Java代码 class MainAdapter:RecyclerView.Adapter(){ 变量列表:list=arrayListOf() 变量跟踪器:SelectionTracker?=null 初始化{ SetHassTableId(真) } 覆盖BindViewHolder(holder:ViewHolder,位置:Int){ val编号=列表[位置] 追踪器?,让我来{ holder.bind(编号,it.isSelected(position.toLong())) } },java,android,kotlin,android-recyclerview,Java,Android,Kotlin,Android Recyclerview,我想了解这个例子。tracker?是什么。让翻译成什么?还有Java中的init的等价物是什么 class MainAdapter : RecyclerView.Adapter<MainAdapter.ViewHolder>() { var list: List<Int> = arrayListOf() var tracker: SelectionTracker<Long>? = null init { setHas
tracker?是什么。让
翻译成什么?还有Java中的init
的等价物是什么
class MainAdapter : RecyclerView.Adapter<MainAdapter.ViewHolder>() {
var list: List<Int> = arrayListOf()
var tracker: SelectionTracker<Long>? = null
init {
setHasStableIds(true)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val number = list[position]
tracker?.let {
holder.bind(number, it.isSelected(position.toLong()))
}
}
根据文档,init相当于java中的构造函数
init
根据文档-Kotlinlet是一个作用域函数,其中表达式内声明的变量不能在表达式外使用
let
这里的it是跟踪器的副本。更改it不会影响跟踪器变量
init
根据文档,init相当于java中的构造函数
init
根据文档-Kotlinlet是一个作用域函数,其中表达式内声明的变量不能在表达式外使用
let
这里的it是跟踪器的副本。更改it不会影响跟踪器变量。MainAdapter在Java代码中的等效值如下:
init
tracker?.let {
holder.bind(number, it.isSelected(position.toLong()))
}
class MainAdapter扩展了RecyclerView.Adapter{
列表=新的ArrayList();
选择跟踪器;
公共MainAdapter(){
setHasStableIds(true);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int位置){
int number=list.get(位置);
如果(跟踪器!=null){
holder.bind(编号,tracker.isSelected(position.toLong());
}
}
}
Java代码中的MainAdapter等价物如下:
tracker?.let {
holder.bind(number, it.isSelected(position.toLong()))
}
class MainAdapter扩展了RecyclerView.Adapter{
列表=新的ArrayList();
选择跟踪器;
公共MainAdapter(){
setHasStableIds(true);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int位置){
int number=list.get(位置);
如果(跟踪器!=null){
holder.bind(编号,tracker.isSelected(position.toLong());
}
}
}
假设您熟悉java,我建议您使用另一种方式阅读kotlin代码。您可以在android studio中使用以下选项
在这之后,只需单击decompile和Voila!,您将获得java代码
现在,您可以阅读任何kotlin代码。假设您对java非常熟悉,我推荐另一种阅读kotlin代码的方法。您可以在android studio中使用以下选项
class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {
List<Integer> list = new ArrayList<>();
SelectionTracker<Long> tracker;
public MainAdapter() {
setHasStableIds(true);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
int number = list.get(position);
if (tracker != null) {
holder.bind(number, tracker.isSelected(position.toLong()));
}
}
}
在这之后,只需单击decompile和Voila!,您将获得java代码
现在,您可以阅读任何kotlin代码
class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {
List<Integer> list = new ArrayList<>();
SelectionTracker<Long> tracker;
public MainAdapter() {
setHasStableIds(true);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
int number = list.get(position);
if (tracker != null) {
holder.bind(number, tracker.isSelected(position.toLong()));
}
}
}
上面的输出“11”,所以“let”不复制接收器,“it”只是指向接收器,它有副作用
上面的输出“11”,所以“let”不复制接收器,“it”只是指向接收器,它有副作用是否要将此代码转换为java?是否要将此代码转换为java?