Как я могу использовать setOnClickListener
в каждом элементе моего ListView
?
мой xml:
<ListView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
Как я могу использовать setOnClickListener
в каждом элементе моего ListView
?
мой xml:
<ListView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
в вашей активности котлина:
override fun onCreate(savedInstanceState: Bundle?) {
val listView: ListView = findViewById(R.id.yourListViewId)
listView.onItemClickListener = AdapterView.OnItemClickListener { adapterView, view, i, l ->
//YOUR CODE HERE
}
}
ListView listView=(ListView)findviewById(R.id.tv1)
- person Altaf Shaikh; 22.08.2017
Нет ничего лучше, чем опоздать на вечеринку. Мы публикуем этот ответ, потому что мы изо всех сил пытались установить OnLongClickListener в нашем RecyclerAdapter. Почему, потому что, когда вы вводите код, если значение RETURN не включено перед добавлением строк кода между оператором открытия и возвратом, компилятор жалуется, и можно подумать, что они просто неверны, вот небольшой код, надеюсь, он поможет любому новичку в OnLongClickListener
class PersonRecyclerAdapter(contactList: List<Contact>, internal var context: Context) : RecyclerView.Adapter<PersonRecyclerAdapter.ViewHolder>() {
private var contactList: List<Contact> = ArrayList()
init { this.contactList = contactList }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.new_single_card,parent,false)
return ViewHolder(view)
}
override fun getItemCount(): Int {
return contactList.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val items = contactList[position]
holder.item.text = items.name
holder.bindCheckBox()
// This code calls the function below in the inner class
// too much code manipulation
holder.list_new_card.setOnLongClickListener { view ->
holder.ckBox.isChecked = false
holder.ckBox.isEnabled = true
holder.item.text = items.name
true
}
/*holder.list_new_card.setOnClickListener {
holder.ckBox.isChecked = false
holder.ckBox.isEnabled = true
holder.item.text = items.name
//val i = Intent(context, MainActivity::class.java)
//i.putExtra("Mode", "E")
//i.putExtra("Id", items.id)
//i.putExtra("ET",items.name)
//i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
//context.startActivity(i)
// This code attaches a listener to the tvName in the new_single_card.xml
}*/
holder.editCLICK.setOnClickListener {
val i = Intent(context, MainActivity::class.java)
i.putExtra("FROM", "U")
i.putExtra("MainActId",items.id)
i.putExtra("ET",items.name)
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(i)
}
}
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
var item: TextView = view.findViewById(R.id.tvName) as TextView
var list_new_card: CardView = view.findViewById(R.id.list_new_card) as CardView
var editCLICK: RelativeLayout = view.findViewById(R.id.editCLICK) as RelativeLayout
var ckBox:CheckBox = view.findViewById(R.id.ckBox)as CheckBox
// This is how you declare a instance of the Widiget you want to work with
fun bindCheckBox(){// Create function and BIND it in the onBindViewHolder function
ckBox.setOnCheckedChangeListener { view,isChecked ->
if(ckBox.isChecked){
item.visibility = View.VISIBLE
item.setTextColor(Color.parseColor("#FF0000"))
item.text = "Click & HOLD Me to View Item"
ckBox.isEnabled = false
}else
item.setTextColor(Color.parseColor("#000000"))
}
}
}
}
Обратите внимание на различные способы включения слушателей в RecyclerAdapter.