小编Sha*_*T D的帖子

import kotlinx.android.synthetic 失败:Android studio 找不到它,但我可以运行该应用程序

我发现了很多关于这个主题的东西,但还不足以解决它,所以我就开始吧。

我刚刚开始一个新项目,他们遇到了一个严重的问题:

import kotlinx.android.synthetic
Run Code Online (Sandbox Code Playgroud)

Android Studio 无法解决。项目运行起来,构建过程中没有问题,但是 Android Studio 在代码中向我显示了很多错误,因为它无法识别布局。这意味着布局/组件没有快捷方式。

我认为我们已经导入了正确的插件:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'org.jetbrains.kotlin.android.extensions'
Run Code Online (Sandbox Code Playgroud)

我尝试删除 apply plugin: 'org.jetbrains.kotlin.android.extensions',但没有帮助。我们的构建脚本依赖项中还有类路径“org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version”。

不是 Gradle 专家,但欢迎寻求任何帮助!

android gradle synthetic kotlin kotlinx

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

对 RecyclerView 的项目进行排序 - Kotlin 代码

我有一个数据类,其中包含一个名为“prio”的成员(下面的示例)。这个“prio”应该创建recyclerView如何显示项目的顺序->带有数字1的“prio”应该显示在rv的顶部,数字2在数字1的下方,依此类推。

附加信息:但是用户可以决定该项目应该具有哪个编号(prio)。所以“prio”不是固定的。

数据类

data class TaskModel(

val id: Int,
val task: String,
var prio: Int
)
Run Code Online (Sandbox Code Playgroud)

问题:你能帮我创建一个函数来对“prio”进行排序并在 recyclerView 中初始化这个函数作为 recyclerView 显示项目的顺序吗?

依恋:

适配器:

open class TaskAdapter (private val context: Context, private val list: ArrayList<TaskModel>)
: RecyclerView.Adapter<RecyclerView.ViewHolder>() {

private val mTaskDetails : TaskModel? = null


private var onClickListener: OnClickListener? = null

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    return MyViewHolder(
        LayoutInflater.from(context).inflate(R.layout.activity_item_adapter, parent, false)
    )
}

override fun getItemCount(): Int {
    return list.size
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) …
Run Code Online (Sandbox Code Playgroud)

sorting android kotlin android-recyclerview

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

kotlin延迟初始化属性不能在init块中修改

我的类中有一些属性是延迟初始化的。我希望它们是不可变的,这就是为什么我不使用它们lateinit,并且我不希望它们可以为空,所以我认为懒惰是最好的选择。

init我的类的块中,我想修改其中一个属性,但它给了我编译错误:Variable 'mLstQuestions' must be initialized
我知道惰性属性在使用后立即初始化,那么为什么会发生这种情况呢?我怎样才能解决这个问题?什么是更好的方法?

如果我创建一个函数Initialize()并在该函数中修改它。完全没问题,我可以在 init 块中调用它。为什么呢?这工作正常吗?有什么不同?如果在块中禁止执行类似的操作init,那么函数调用是否也应该被禁止?

这是我的代码:

class CharacterListView(
    inflater: LayoutInflater,
    parent: ViewGroup
) {
    init {
        mLstQuestions.adapter = mQuestionsListAdapter
        // error : Variable 'mLstQuestions' must be initialized
        // error : Variable 'mQuestionsListAdapter' must be initialized
    }
    
    private val mLstQuestions by lazy { findViewById<RecyclerView>(R.id.char_list) }
    private val mQuestionsListAdapter by lazy { QuestionsListAdapter(getContext(), this) }
    private val mRootView by lazy { inflater.inflate(R.layout.activity_main, parent, false) }
...
} …
Run Code Online (Sandbox Code Playgroud)

android constructor kotlin

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

EditText.getText.toString() 返回空字符串

我正在尝试从中恢复文本,EditText但是当我Toast收到字符串时,我得到了一个空字符串。

这是代码:

view =inflater.inflate(R.layout.fragment_home, container, false);
EditText id=view.findViewById(R.id.busID);
busId=id.getText().toString();
btn.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(final View view) {
          Toast.makeText(getContext(),busId,Toast.LENGTH_LONG).show();
     }
});
Run Code Online (Sandbox Code Playgroud)

这是屏幕截图

截屏

请帮帮我。我不知道为什么它返回空字符串

java android android-edittext android-studio android-toast

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

在不使用显式 Job() 对象的情况下取消父作业

在以下代码中,我创建了两个作业,然后取消了父作业。我希望子作业会被取消,但是,子作业不会被取消,它们仍然处于活动状态。为什么?

注意:我知道通过创建 Job() 对象,然后将作业对象提供给协程上下文,然后取消 Job() 对象,可以轻松解决此问题。我的问题是为什么下面的代码不起作用?如果我想取消父作业,是否必须使用显式父参数?

fun main() {

    // CoroutineScope
    val coroutineScope = CoroutineScope(Dispatchers.IO)

    var child1 : Job? = null
    var child2 : Job? = null

    // Use
    val currentJob = coroutineScope.launch {
        child1 = coroutineScope.launch {
            delay(500)
        }
        child2 = coroutineScope.launch {
            delay(500)
        }
    }

    Thread.sleep(300L)

    currentJob.cancel()

    println("Job 1 state: ${child1?.status()}")
    println("Job 2 state: ${child2?.status()}")
    println("Parent job is active: ${coroutineScope.isActive}")
    println("Parent job is active: ${currentJob.isActive}")


    Thread.sleep(2000L)
}
Run Code Online (Sandbox Code Playgroud)

输出 :

Job 1 state: Active
Job 2 state: Active …
Run Code Online (Sandbox Code Playgroud)

android kotlin kotlin-coroutines

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