如何在列表视图中隐藏键盘?

枣1

当我在列表视图的editText中输入数字时,qwerty键盘仍然显示。

请查看此动画GIF https://ibb.co/4K9dz1N以查看问题。(请点击“ lire le GIF”以启动动画GIF)。

我实现了我在stackoverflow中发现的两个函数(带有hidekeyboard函数的setOnItemClickListener),但是没有结果...

这是我的应用程序的代码。

主要活动 :

import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.view.inputmethod.InputMethodManager
import android.widget.AdapterView.OnItemClickListener
import android.widget.EditText
import android.widget.ListView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity


class MainActivity : AppCompatActivity() {
    lateinit var textView2: TextView
    lateinit var listView: ListView

    //var adapter: MyAdapter? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"
        listView = findViewById(R.id.listView)
        textView2 = findViewById(R.id.textView2)



        listView.adapter=CustomAdapter(DataClass(),this)



        var textView2: TextView
        textView2 = findViewById(R.id.textView2)
        var editText : EditText


        listView.setOnItemClickListener({ parent, view, position, id -> hideKeyboard(this) })






    }



    fun hideKeyboard(context: Context) {
        try {
            val inputManager: InputMethodManager =
                context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
            val view = (context as Activity).currentFocus
            if (view != null) {
                inputManager.hideSoftInputFromWindow(
                    view.windowToken,
                    InputMethodManager.HIDE_NOT_ALWAYS
                )
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }




    fun Update()
    {
    }


    fun fonction ()
    {
        var textView2: TextView

    }


    fun fonction2 ()
    {
        var textView2: TextView
       // textView2 = findViewById(R.id.textView)
        //textView2.text="?????"
    }

    private fun generateData(): List<String> {
        val data: MutableList<String> = ArrayList()
        for (i in 0..99) {
            data.add(i.toString() + "th Element")
        }
        return data
    }
}

class DataClass(){
    var list1: MutableList<String> = generateData2() as MutableList<String>
    var list2: MutableList<String> = generateData3() as MutableList<String>
    var list3: MutableList<String> = generateData4() as MutableList<String>

    private fun generateData2(): List<String> {
        val data: MutableList<String> = mutableListOf()
        for (i in 0..99) {
            data.add(i.toString())
        }
        return data
    }

    private fun generateData3(): List<String> {
        val data: MutableList<String> =mutableListOf()
        for (i in 0..99) {
            data.add("")
        }
        return data
    }

    private fun generateData4(): List<String> {
        val data: MutableList<String> = mutableListOf()
        for (i in 0..99) {
            data.add("")
        }

        return data
    }

}

定制适配器

import android.app.Activity
import android.content.Context
import android.os.Handler
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.BaseAdapter
import android.widget.EditText
import android.widget.TextView


//Class MyAdapter
class CustomAdapter(private val data: DataClass, private val activity: MainActivity) : BaseAdapter() {

    override fun getCount(): Int {
        return data.list1.size
    }
    override fun getItem(position: Int): Any {
        return position
    }
    override fun getItemId(position: Int): Long {
        return position.toLong()
    }

    fun fonction3(position: Int) {
        if(data.list3[position ]!=""){
        data.list2[position]="Input"}
        var plage1: Int = 0
        var plage2: Int = 0
        var bornesuivante: Int = 0
        var borneprécédente: Int = 0
        //if (position >= 0 && position <=100) {
            var j: Int = 1
            var k: Int = 1
            //recherche vers le bas du prochain data non nul


            loop1@ for (i in 1..data.list3.size-position-1) {
                if (data.list2[position + i] == "") {//Log.i("tag",j.toString())
                    //Log.i("tag",(position+i).toString())

                    j = j + 1
                } else {

                    var bornesuivante = j + position

                    plage1 = bornesuivante - position
                    break@loop1
                }
            }
        Log.i("plage1 ",plage1 .toString())

            loop2@  for (i in 1..position) {

                    if (data.list2[position - i] == "") {//Log.i("tag",j.toString())
                        //Log.i("tag",(position+i).toString())

                        k = k + 1
                    } else {

                        var borneprécédente = position - k

                        plage2 = position - borneprécédente
                        break@loop2

                }
           }

        Log.i("plage2 ",plage2 .toString())
            /*Log.i("position", position.toString())
            Log.i("borne précédente", borneprécédente.toString())
            Log.i("plage 2", plage2.toString())
            // data.list3[position] = 2.toString()//bornesuivante.toString()
            Log.i("tag", data.list2[position].toString())
            Log.i("tag", data.list2[bornesuivante].toString())
            Log.i("tag", bornesuivante.toString())*/

//if (data.list2[position] !="0" && data.list2[bornesuivante] !="0") {
            for (k in 1..plage1 - 1) {

                data.list3[position + k] = ((plage1 - k) * (data.list3[position].toDouble()) + k * data.list3[position + plage1].toDouble()).toString()
                data.list3[position + k] = (data.list3[position + k].toDouble() / (plage1)).toInt().toString()
                Log.i("k",k.toString())
                Log.i("plage1",plage1.toString())
                Log.i("data position",data.list3[position].toString())
                Log.i("data position+plage1",data.list3[position+plage1].toString())

//a=true                // }
            }

            for (k in 1..plage2 - 1) {

                data.list3[position - k] = ((plage2 - k) * (data.list3[position].toDouble()) + k * data.list3[position-plage2 ].toDouble()).toString()
                data.list3[position - k] = (data.list3[position - k].toDouble() / (plage2)).toInt().toString()

                //Log.i("tag6", (data.list3[position + k].toDouble()/(plage)).toString())
                //Log.i("tag7","!!!!")
//a=true                // }
            }


            // data.list2[position] = (0.5 * (data.list2[position - 1].toDouble() + data.list2[position + 1].toDouble())).toString()

            //Log.i("tag",bornesuivante.toString())
            //activity.Update()
            //   }

            // Log.i("tag",a.toString())
            //return a
        }


  //  }
        override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? {
            val convertView: View? = LayoutInflater.from(parent.context).inflate(R.layout.row, parent, false)

            val Edit1: EditText = convertView!!.findViewById(R.id.Edit1)
            val Edit2: EditText = convertView.findViewById(R.id.Edit2)
            val textView: TextView = convertView.findViewById(R.id.textView)
            val textView3: TextView = convertView.findViewById(R.id.textView3)
            Edit1.setText(data.list1[position])
            Edit2.setText(data.list3[position])
            //textView.setText(data.list3[position])
            textView3.setText(data.list3[position])
            Edit1.addTextChangedListener(object : TextWatcher {

                override fun afterTextChanged(p0: Editable?) {
                    data.list1[position] = Edit1.text.toString()
                    //Edit1.setText(data.list1[position])
                    //textView.setText(data.list3[position])
                    // activity.fonction()
                }

                override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                }

                override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                }
            })


            Edit2.addTextChangedListener(object : TextWatcher {

                override fun afterTextChanged(p0: Editable?) {
                    Handler().postDelayed({
                        data.list3[position] = Edit2.text.toString()



                    if (!Edit2.text.toString().isBlank()) {
                        fonction3(getItem(position) as Int)

                        //Edit2.setText(data.list2[position])
                        //activity.fonction2()

                        //textView.setText(data.list3[position])
                        Handler().postDelayed({
                            notifyDataSetChanged()
                        }, 100)
                    }}, 1000)
                    //textView3.setText(data.list3[position])
                }

                override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {

                }

                override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {

                }
                //  })
            })

            return convertView


        }


    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"

    android:orientation="vertical">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="611dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />
</LinearLayout>

row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="4dp">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/Edit1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:hint="hint" />

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/Edit2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:hint="hint"
        android:inputType="numberSigned"
        android:numeric="integer" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="32dp"
        android:layout_weight="1"
        android:singleLine="true"
        android:imeActionLabel="Done"
        android:imeOptions="actionDone"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:singleLine="true"
        android:imeActionLabel="Done"
        android:imeOptions="actionDone"
        android:text="TextView" />
</LinearLayout>

谢谢你的帮助

艾哈迈德·巴杰瓦

在您的edittext xml中添加此android:imeOptions =“ actionDone”这将在完成按钮上隐藏键盘。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何隐藏列表视图中的向右箭头?

来自分类Dev

如何在视图中隐藏超大背景视图?

来自分类Dev

如何在回收者视图中隐藏特定行的视图?

来自分类Dev

在EditText视图中输入后隐藏键盘

来自分类Dev

如何在列表视图中显示位图?

来自分类Dev

如何在列表视图中实现拖放?

来自分类Dev

如何在列表视图中搜索

来自分类Dev

如何在列表视图中删除项目

来自分类Dev

如何在列表视图中搜索

来自分类Dev

如何在列表视图中获取图像?

来自分类Dev

如何在列表视图中显示位图?

来自分类Dev

如何在列表视图中设置onclicklistener

来自分类Dev

如何在列表视图中更改GridView

来自分类Dev

如何在列表视图中显示整数?

来自分类Dev

如何在 mvc 视图中获取列表

来自分类Dev

如何在列表视图中显示列表视图

来自分类Dev

Xamarin 表单:如何从列表视图中隐藏重复的月份名称?

来自分类Dev

如何在根视图中隐藏导航控制器?

来自分类Dev

Android:如何在滚动视图中添加列表视图?

来自分类Dev

如何在列表视图中保存视图状态

来自分类Dev

如何在Android列表视图中对齐文本视图?

来自分类Dev

如何在列表视图中获取视图的 id

来自分类Dev

Android:如何在列表视图中重复列表项

来自分类Dev

如何在列表视图中添加额外的列表项?

来自分类Dev

自动布局如何在具有3个等宽视图的视图中隐藏1个视图

来自分类Dev

如何在表格视图 cellForRow 委托方法中从堆栈视图中隐藏视图

来自分类Dev

将元素隐藏在列表视图中

来自分类Dev

在列表视图中显示或隐藏对象

来自分类Dev

如何在索引视图中对列表顺序进行排序

Related 相关文章

热门标签

归档