listView长安出现选项菜单

最近自己做了个东西,里面需要长按listview出现选项菜单来进行对这个list的操作,在网上查了许多方法,最后选择了一个可以跟list中某个指定的item交互的方法

    public class myOnItemLongClickListener implements AdapterView.OnItemLongClickListener{
        @Override
        public boolean onItemLongClick(AdapterView adapterView, View view, int i, long l) {
            final int item=i;
           new AlertDialog.Builder(MainActivity.this).
                   setTitle(R.string.item_operation).
                   setItems(R.array.itemarray, new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialogInterface, int i) {
    		//你的操作代码
               }
           }).show();
            return true;
        }
    }
这里的onItemLongClick中用了AlertDialog生成一个选项菜单,AlertDialog中的setTitle()方法设置的菜单的标题,setItem()方法设置了菜单的菜单项,注意,这里的setItem()方法中需要一个array的资源,你需要在你的values中创建一个arrays.xml文件,再在其中创建一个数组,实例如下:



    
        删除
    
其中的Item就是菜单选项。你可以多写几个item上去,菜单项就多几个,菜单项的编码是从0开始计算的,在AlertDialog中的onClick方法中,第二个参数i就是菜单项的编码,这里可以用if(i==x){}语句来进行菜单项的选择判断,i==0表示这个菜单项选择选择的第一项,即是"删除"这个菜单项,我这里没有第二个菜单项,所以i==1可能会报错,我没试过。


还有为了跟listView中的item进行联系,我们可以从onItemLongClick()方法中获取第三个参数i来进行交互,这个i表示listview中的第几项,即是你选择长按的item项,这是为了可以跟菜单选项进行交互,我们需要把i放入onClick()方法中,但是由于AlertDialog时一个匿名内部类,所以需要把i变成final才能放入onClick()方法中,我这里用了final int item=i;这样item就可以传入onClick()方法,在onClick()方法中就可以根据选择的菜单项来对listView的item进行相关的操作。



你可能感兴趣的:(android)