ওভারভিউ
এই টিউটোরিয়ালে দেখানো হয়েছে কিভাবে ListView-এ OnItemLongClickListener ব্যবহার করে লং ক্লিক (দীর্ঘ স্পর্শ) ইভেন্ট হ্যান্ডেল করা যায়।
প্রয়োজনীয় ধাপসমূহ
ধাপ ১: নতুন প্রজেক্ট তৈরি
ধাপ ২: activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
ধাপ ৩: MainActivity.kt
import android.os.Bundle
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private val mobileArray = arrayOf(
"Android", "iPhone", "Windows Mobile",
"Blackberry", "WebOS", "Ubuntu", "Windows 7", "macOS"
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "ListView Long Click Demo"
val listView = findViewById<ListView>(R.id.listView)
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, mobileArray)
listView.adapter = adapter
// লং ক্লিক লিসেনার সেট
listView.onItemLongClickListener = AdapterView.OnItemLongClickListener { parent, view, position, id ->
val item = parent.getItemAtPosition(position) as String
Toast.makeText(applicationContext, "Long clicked: $item", Toast.LENGTH_SHORT).show()
true // true রিটার্ন মানে ইভেন্ট কনসামড হয়েছে
}
// সাধারণ ক্লিক লিসেনার (অপশনাল)
listView.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
val item = parent.getItemAtPosition(position) as String
Toast.makeText(applicationContext, "Clicked: $item", Toast.LENGTH_SHORT).show()
}
}
}
ধাপ ৪: AndroidManifest.xml
স্ট্যান্ডার্ড কনফিগারেশন।
গুরুত্বপূর্ণ পয়েন্টস
trueরিটার্ন করা মানে লং ক্লিক ইভেন্ট হ্যান্ডেল হয়েছে এবং আরও প্রপেগেট হবে নাfalseরিটার্ন করলে সিস্টেম ডিফল্ট আচরণ (যেমন কনটেক্সট মেনু) চলতে পারেpositionপ্যারামিটারটি অ্যাডাপ্টারের পজিশন নির্দেশ করেidহল ডেটাবেজ আইডি (যদি কার্সর অ্যাডাপ্টার ব্যবহার করা হয়)
RecyclerView-এ লং ক্লিক (আধুনিক পদ্ধতি)
ListView লিগ্যাসি। নতুন অ্যাপে RecyclerView ব্যবহার করুন:
// RecyclerView.Adapter-এ
inner class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) {
init {
itemView.setOnLongClickListener {
val position = adapterPosition
if (position != RecyclerView.NO_POSITION) {
onLongClick(position)
true
} else false
}
}
}
// ইন্টারফেস ডিফাইন করুন
interface OnItemLongClickListener {
fun onItemLongClick(position: Int)
}
কনটেক্সট মেনু ব্যবহার (বিকল্প)
override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenu.ContextMenuInfo) {
super.onCreateContextMenu(menu, v, menuInfo)
val info = menuInfo as AdapterView.AdapterContextMenuInfo
menu.add(0, 1, 0, "Delete")
menu.add(0, 2, 0, "Edit")
}
override fun onContextItemSelected(item: MenuItem): Boolean {
val info = item.menuInfo as AdapterView.AdapterContextMenuInfo
when (item.itemId) {
1 -> deleteItem(info.position)
2 -> editItem(info.position)
}
return super.onContextItemSelected(item)
}
// Activity-তে রেজিস্টার করুন
registerForContextMenu(listView)