Я пытаюсь открыть соответствующее изображение элемента списка на другой деятельности. У меня есть listView, уже заполненный содержимым JSON, но я не знаю, как и где установить 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()
}
}
}
}