`
zhifeiji512
  • 浏览: 119239 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ListView结合ContextMenu 获取点击项的Position

 
阅读更多

ContextMenu称为上下文菜单,一般在控件上长按时弹出。今天我们学习ContextMenu的用法,这里与listview相结合,先在ListView显示几个Item,然后在Item上长按,弹出一个菜单(就是ContextMenu),点击菜单上的项目,提示刚才长按的Item的Position.

main.xml 里就一个ListView

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView  android:id="@+id/lv"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>

 

package com.pocketdigi.com;
 
import java.util.ArrayList;
 
 
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
 
public class main extends Activity {
	 /** Called when the activity is first created. */
	ListView lv;
	ArrayAdapter<String> Adapter;
	ArrayList<String> arr=new ArrayList<String>();
	//定义菜单项
	protected static final int Menu_Item1=Menu.FIRST;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lv=(ListView)findViewById(R.id.lv);
        //添加ListView项
    	arr.add("123");
    	arr.add("234");
    	arr.add("345");
    	Adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, arr);
    	lv.setAdapter(Adapter);
    	lv.setOnCreateContextMenuListener(MenuLis);
    }
    ListView.OnCreateContextMenuListener MenuLis=new ListView.OnCreateContextMenuListener(){
		@Override
		public void onCreateContextMenu(ContextMenu menu, View v,
				ContextMenuInfo menuInfo) {
			// TODO Auto-generated method stub
			//添加菜单项
			menu.add(Menu.NONE,Menu_Item1,0,"获取position");
		}
 
    };
    //选中菜单Item后触发
    public boolean onContextItemSelected(MenuItem item){
    	//关键代码在这里
        AdapterView.AdapterContextMenuInfo menuInfo;
        menuInfo =(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
        //输出position
    	Toast.makeText(main.this,String.valueOf(menuInfo.position), Toast.LENGTH_LONG).show();
    	 return super.onContextItemSelected(item); 
 
    }
 
}

 

 

List 中显示context Menu

// get the list view
ListView list = (ListView)findViewById(R.id.list);
// set adapter before registering the context menu
list.setAdapter(adapter);
// register it for the context menu
registerForContextMenu(list);

分享到:
评论

相关推荐

    ListView:单击和长按弹出上下文菜单(ContextMenu)

    在`ListView`中,每个列表项的点击事件可以通过设置`OnItemClickListener`来处理,而长按事件则触发上下文菜单。通过`Adapter`,我们可以关联数据与视图,确保列表项的正确显示。例如,我们可以自定义一个`...

    Android编程实现为ListView创建上下文菜单(ContextMenu)的方法

    在这里,我们可以获取到用户选择的菜单项ID,以及通过`menuInfo`获取到触发菜单的ListView项的信息,例如位置。 ```java @Override public boolean onContextItemSelected(MenuItem item) { AdapterView....

    上下文菜单+listview

    1. 在`onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id)`方法中,你可以通过`position`参数获取到被点击项的索引。 2. 使用`getAdapter().getItem(position)`获取到对应位置的数据对象。 3. ...

    Android之上下文菜单ContextMenu

    在Android中,`ListView`是常见的数据展示组件,它可以与`ContextMenu`结合使用。当用户在`ListView`的某一行上长按时,会触发`ContextMenu`。为了使`ListView`中的每个项目都能弹出`ContextMenu`,需要在适配器的`...

    ListView案例两个,右击菜单+排序

    // 根据position获取ListView中的数据 YourItemData item = dataList.get(position); // 创建并添加菜单项 menu.setHeaderTitle("选择操作"); menu.add(0, COPY_ID, 0, "复制"); menu.add(0, DELETE_ID, 0, ...

    Listview 长按弹出菜单

    `Listview 长按弹出菜单`的功能可以极大地提升用户体验,使得用户在查看列表项时能快速执行相关操作。本教程将深入讲解如何实现这个功能,以及相关的事件处理。 一、ListView概述 ListView是Android SDK提供的一种...

    ListView长按显示菜单

    `ListView长按显示菜单` 是一个常见的交互设计,允许用户通过长按列表项(ListView中的每一行)来触发一个上下文相关的操作菜单,提供了对单个条目进行编辑、删除或其他定制操作的方式。在本篇文章中,我们将深入...

    Android之ContextMenu

    在这个方法中,我们可以通过`MenuInflater`来填充菜单项,并设置相应的点击监听器。 ```java @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { ...

    关于安卓数据库的处理

    3. **处理菜单选择**:通过重写onContextItemSelected()方法,处理用户在ListView项上点击的菜单项。 ```java @Override public boolean onContextItemSelected(MenuItem item) { AdapterView....

    Android编程实现带有图标的ListView并带有长按菜单效果示例

    总结来说,要实现带有图标的ListView以及长按菜单效果,我们需要创建自定义的ListView项类,自定义适配器,设置ListView的图标和文本,注册长按事件,以及处理长按菜单项的点击事件。这为用户提供了丰富的交互体验,...

    Android开发技巧总汇(4).pdf

    6. **自定义ListView**:如果系统默认的ListView不能满足需求,可以创建自定义的ListView,通过重写`getView()`方法来自定义每个列表项的视图,或使用`Adapter`来控制数据绑定。 7. **查看SQLite内容**:使用SQLite...

    Android组件实现长按弹出上下文菜单功能的方法

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add(0, MENU_UPDATE, 0, "修改信息"); menu.add(0, MENU_ADD, 0,...

    安卓记事本

    * 1,ListView的长按点击事件,用来AlertDialog来判断是否删除数据。 * 2,ListView的点击事件,跳转到第二个界面,用来修改数据 * 4,menu里的退出事件,用来退出程序 * 5,menu里的新建事件,用来新建便签 * ...

Global site tag (gtag.js) - Google Analytics