当我们已经加载listview后,如何在onItemClickListener的其他活动上显示listitem的内容?

问题描述 投票:0回答:1

我正在尝试打开其他活动上列表项的相应图像。我的listView已经充满了JSON内容,但不知道如何在已填充的listview上以及在何处设置onItemClickListener?我尝试过,但对Itemclick却没有任何反应。您能告诉我如何实现吗?

您可以在下面查看我的代码:

class MainActivity : AppCompatActivity() {

lateinit var listView : ListView

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val editText = findViewById<EditText>(R.id.editText)
    val url =editText.text
    listView = findViewById<ListView>(R.id.listView)

    var redColor =Color.parseColor("#FF0000")

    listView.setBackgroundColor(redColor)


    var load = findViewById<Button>(R.id.button)

    load.setOnClickListener{
        AsyncTaskHandler().execute(url.toString())
    }



}

inner class AsyncTaskHandler:AsyncTask<String,String,String>() {

    override fun onPreExecute() {
        super.onPreExecute()
        findViewById<ProgressBar>(R.id.loader).visibility = View.VISIBLE
    }

    override fun doInBackground(vararg p0: String?): String {

        return try {
            p0.first().let {
                val url = URL(it)
                val urlConnect = url.openConnection() as HttpURLConnection
                urlConnect.connectTimeout = 700
                publishProgress(100.toString())
                urlConnect.inputStream.bufferedReader().readText()

            }
        } catch (e: Exception) {
            p0.first().let {
                val url = URL(it)
                val urlConnect = url.openConnection() as HttpURLConnection
                urlConnect.disconnect().toString()
            }
        }
    }

    override fun onPostExecute(result: String?) {
        super.onPostExecute(result)
        findViewById<ProgressBar>(R.id.loader).visibility = View.GONE

       jsonResult(result)
        Log.d("Fetched Data", result)

    }

   private fun jsonResult(jsonString: String?){
        val jsonArray = JSONArray(jsonString)
        val list=ArrayList<MyData>()
        var i = 0

        while(i<jsonArray.length()){
            val jsonObject=jsonArray.getJSONObject(i)
            list.add(
                MyData(
                jsonObject.getString("author"),
                jsonObject.getString("photo")
            )
            )
            i++
        }

        val adapter = ListAdapter(this@MainActivity,list)
        val listView = findViewById<ListView>(R.id.listView)
        listView.adapter = adapter

       listView.onItemClickListener = AdapterView.OnItemClickListener {
               _, _, i, _ ->
           Toast.makeText(this@MainActivity,
               "you selected item " + (i + 1),
               Toast.LENGTH_LONG).show()
       }


    }



}

}

android kotlin
1个回答
0
投票

在您的itemClickListener里面,请像这样添加:

val otherIntent = Intent(this@MainActivity, OtherActivity::class.java)

otherIntent.putExtra("listItem, data)
startActivity(otherIntent)

并且OtherActivity接收这样的数据:

var data = intent.getSerializableExtra("listItem") as MyData?

MyData应该可序列化

class MyData(): Serializable
© www.soinside.com 2019 - 2024. All rights reserved.