1. Creating New Project in Kotlin
- Open Android Studio.
- Go to File => New => New Project.Give Name To your application. Then, check Include Kotlin Support and click next button.
- Select minimum SDK you need. However, we have selected 21 as minimum SDK. Then, click next button.
- Then, select Empty Activity => click next => click finish.
2.Here we have XML file activity_main.xml.Which Contain ListView.We Have to Perform Long Click on ListView Item to open Context Menu.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="40sp" android:gravity="center" android:text="Long Press On List Item to Open Context Menu" android:textColor="@color/colorPrimary" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
3.MainActivity.kt
package com.dharmendra.contextmenu import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.view.ContextMenu import android.view.MenuItem import android.view.View import android.widget.AdapterView.AdapterContextMenuInfo import android.widget.ArrayAdapter import android.widget.ListView import android.widget.Toast class MainActivity : AppCompatActivity() { lateinit var array: Array<String> override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //Find View By Id For ListView val listView = findViewById<ListView>(R.id.listView) as ListView //Array of String Which Contain Name of Persons. array = arrayOf("Sachin", "Vishal", "Rishu", "Krishank", "Vivek", "Jatin", "Raj", "Rajan", "Nikhil") //Creating Adapter val adp = ArrayAdapter(this@MainActivity, android.R.layout.simple_list_item_1, array) //Set Adapter to ListView listView.adapter = adp //Register ListView for Context Menu registerForContextMenu(listView) } override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) { super.onCreateContextMenu(menu, v, menuInfo) //Set Header of Context Menu menu!!.setHeaderTitle("Select Option") menu.add(0, v!!.id, 0, "Call") menu.add(0, v.id, 1, "SMS") menu.add(0, v.id, 2, "Email") menu.add(0, v.id, 3, "WhatsApp") /* menu.add get 4 Parameters 1. grouId if you want to add multiple Group than for every group Id is Diffrent Here we have only One Group so We take 0(Zero) as GroupId 2.v.id is our Item Id 3. Set Order of Our Item(Position Of Item) if you Change order of Call to 1 and SMS to 0 than in Menu SMS Display First. 4. Title to Display on Context menu */ } override fun onContextItemSelected(item: MenuItem?): Boolean { //Get Order of Selected Item val selectedItemOrder = item!!.order //Get Title Of Selected Item val selectedItemTitle = item.title //To get Name of Person Click on ListView val info = item.menuInfo as AdapterContextMenuInfo val listPosition = info.position val name = array[listPosition] Toast.makeText(this@MainActivity, " " + selectedItemTitle + " " + name, Toast.LENGTH_LONG).show() return true } }
Output:
No comments:
Post a Comment