Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Anko生成EditText并给他们onClickListener以移动到另一个EditText_Android_Kotlin_Anko - Fatal编程技术网

Android Anko生成EditText并给他们onClickListener以移动到另一个EditText

Android Anko生成EditText并给他们onClickListener以移动到另一个EditText,android,kotlin,anko,Android,Kotlin,Anko,我想使用AnkoAndroid Kotlin构建一个纵横字谜游戏,它将生成EditText,并让他们onCLickListener垂直/水平移动到另一个EditText。我成功地生成了EditText,但不知道如何让它们onClickListener移动到另一个EditText 这就是我所做的 class CrosswordActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?

我想使用AnkoAndroid Kotlin构建一个纵横字谜游戏,它将生成EditText,并让他们onCLickListener垂直/水平移动到另一个EditText。我成功地生成了EditText,但不知道如何让它们onClickListener移动到另一个EditText

这就是我所做的

class CrosswordActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        CrosswordActivityUI().setContentView(this)
    }
}

class CrosswordActivityUI : AnkoComponent<CrosswordActivity> {
    private val crossword = arrayOf(
            arrayOf("w", "o", "r", "k"),
            arrayOf("o", "", "u", ""),
            arrayOf("r", "u", "n", ""),
            arrayOf("k", "", "", "")
    )

    override fun createView(ui: AnkoContext<CrosswordActivity>) = ui.apply {
        verticalLayout {
            for (rows in crossword) {
                linearLayout {
                    for (column in rows) {
                        editText {
                            visibility = if (column.isNotEmpty()) View.VISIBLE else View.INVISIBLE
                            onClick {

                            }
                        }
                    }
                }
            }
        }
    }.view
}

我已经用React Native构建了这个游戏,只是想把它改写成Native Android。我是本地Android开发的新手,如果还有其他方法,请告诉我,提前谢谢

将导航逻辑构建到视图中这么多可能不好。。。但是如果你想这样做:如果你可以扩展你的循环来拥有索引,那么每个编辑文本的onClick可以使用这些索引来决定下一个要聚焦的编辑文本

for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}
您还必须构建一个数据结构来记录每个单元格的EditText,或者使用GridLayout。这使得每个EditText的onClick代码能够查找其邻居

因此,您有如下伪代码:

onClick {
   val nextX = f(x)
   val nextY = g(y)
   editTextGrid[nextX][nextY].requestFocus()
}

谢谢我对网格布局有了一个想法。