• Android ListView两种长按弹出菜单方式


     

    /**
    
    * 知识点1:ListView item:两种长按弹出菜单方式
    * 知识点2:ListView SimpleAdapter的使用
    *  知识点 3:在java代码中创建一个ListView
    */ 
    
    -----------------------------------------------------
    Activity
    
    代码: 
    
    
    
    public class ListOnLongClickActivity extends Activity { 
            private LinearLayout myListViewlayout; 
            private ListView mListView; 
            SimpleAdapter adapter; 
            public int MID; 
    
            // 创建一个List对象,用来存放列表项的每一行map信息 
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); 
    
            @Override
            public void onCreate(Bundle savedInstanceState) { 
                    super.onCreate(savedInstanceState); 
                    setContentView(R.layout.main); 
    
                    myListViewlayout = (LinearLayout) findViewById(R.id.myListViewlayout); 
                    mListView = new ListView(this); 
                    // 创建布局参数 
                    LinearLayout.LayoutParams listviewParams = new LinearLayout.LayoutParams( 
                                    LinearLayout.LayoutParams.FILL_PARENT, 
                                    LinearLayout.LayoutParams.FILL_PARENT); 
                    // 当滑动列表上,默认显示的黑色 
                    mListView.setCacheColorHint(Color.WHITE); 
                    // 将列表添加到流式布局myListViewlayout中 
                    myListViewlayout.addView(mListView, listviewParams); 
    
                    FillListData(); 
    
                    // 列表现的单机事件 
                    mListView.setOnItemClickListener(new OnItemClickListener() { 
    
                            @Override
                            public void onItemClick(AdapterView<?> arg0, View arg1, 
                                            int position, long id) { 
                                    /* 
                                     * 点击列表项时触发onItemClick方法,四个参数含义分别为 
                                     * arg0:发生单击事件的AdapterView 
                                     * arg1:AdapterView中被点击的View  
                                     * position:当前点击的行在adapter的下标 
                                     * id:当前点击的行的id 
                                     */ 
                                    Toast.makeText(ListOnLongClickActivity.this, 
                                                    "您选择的是" + list.get(position).get("name").toString(), 
                                                    Toast.LENGTH_SHORT).show(); 
                            } 
                    }); 
    
                    /** 
                     * Item 长按方式弹出菜单多选方式1 
                     * Item 长按方式弹出菜单多选方式2 
                     * ItemOnLongClick1()与ItemOnLongClick2()不共存,按实际需要选择 
                     */
            //        ItemOnLongClick1(); 
                    ItemOnLongClick2(); 
            } 
    
            // 填充ListView资源 
            private void FillListData() { 
    
                    adapter = new SimpleAdapter(ListOnLongClickActivity.this, 
                                    getListData(), R.layout.listviewrow, new String[] { "name", 
                                                    "price" }, new int[] { R.id.tv_name, R.id.tv_price }); 
                    mListView.setAdapter(adapter); 
            } 
    
            private List<Map<String, Object>> getListData() { 
    
                    Map<String, Object> _map = new HashMap<String, Object>(); 
                    _map.put("name", "小米"); 
                    _map.put("price", "2350元"); 
                    list.add(_map); 
    
                    _map = new HashMap<String, Object>(); 
                    _map.put("name", "HTC G18"); 
                    _map.put("price", "3340元"); 
                    list.add(_map); 
    
                    _map = new HashMap<String, Object>(); 
                    _map.put("name", "iphone 5"); 
                    _map.put("price", "5450元"); 
                    list.add(_map); 
    
                    _map = new HashMap<String, Object>(); 
                    _map.put("name", "iPhone 4S"); 
                    _map.put("price", "4650元"); 
                    list.add(_map); 
    
                    _map = new HashMap<String, Object>(); 
                    _map.put("name", "MOTO ME525"); 
                    _map.put("price", "1345元"); 
                    list.add(_map); 
                    return list; 
    
            } 
    
            private void ItemOnLongClick1() { 
    //注:setOnCreateContextMenuListener是与下面onContextItemSelected配套使用的 
                    mListView 
                                    .setOnCreateContextMenuListener(new OnCreateContextMenuListener() { 
    
                                            public void onCreateContextMenu(ContextMenu menu, View v, 
                                                            ContextMenuInfo menuInfo) { 
                                                    menu.add(0, 0, 0, "购买"); 
                                                    menu.add(0, 1, 0, "收藏"); 
                                                    menu.add(0, 2, 0, "对比"); 
    
                                            } 
                                    }); 
            } 
    
            // 长按菜单响应函数 
            public boolean onContextItemSelected(MenuItem item) { 
    
                    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item 
                                    .getMenuInfo(); 
                    MID = (int) info.id;// 这里的info.id对应的就是数据库中_id的值 
    
                    switch (item.getItemId()) { 
                    case 0: 
                            // 添加操作 
                            Toast.makeText(ListOnLongClickActivity.this, 
                                            "添加", 
                                            Toast.LENGTH_SHORT).show(); 
                            break; 
    
                    case 1: 
                            // 删除操作 
                            break; 
    
                    case 2: 
                            // 删除ALL操作 
                            break; 
    
                    default: 
                            break; 
                    } 
    
                    return super.onContextItemSelected(item); 
    
            } 
    
            private void ItemOnLongClick2() { 
                    mListView.setOnItemLongClickListener(new OnItemLongClickListener() { 
    
                            @Override
                            public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
                                            final int arg2, long arg3) { 
                                    list.remove(arg2); 
                                    new AlertDialog.Builder(ListOnLongClickActivity.this) 
                                                    .setTitle("对Item进行操作") 
                                                    .setItems(R.array.arrcontent, 
                                                                    new DialogInterface.OnClickListener() { 
                                                                            public void onClick(DialogInterface dialog, 
                                                                                            int which) { 
                                                                                    String[] PK = getResources() 
                                                                                                    .getStringArray( 
                                                                                                                    R.array.arrcontent); 
                                                                                    Toast.makeText( 
                                                                                                    ListOnLongClickActivity.this, 
                                                                                                    PK[which], Toast.LENGTH_LONG) 
                                                                                                    .show(); 
                                                                                    if (PK[which].equals("删除")) { 
                                                                                            // 按照这种方式做删除操作,这个if内的代码有bug,实际代码中按需操作 
                                                                                            list.remove(arg2); 
                                                                                            adapter = (SimpleAdapter) mListView 
                                                                                                            .getAdapter(); 
                                                                                            if (!adapter.isEmpty()) { 
                                                                                                    adapter.notifyDataSetChanged(); // 实现数据的实时刷新 
                                                                                            } 
                                                                                    } 
                                                                            } 
                                                                    }) 
                                                    .setNegativeButton("取消", 
                                                                    new DialogInterface.OnClickListener() { 
                                                                            public void onClick(DialogInterface dialog, 
                                                                                            int which) { 
                                                                                    // TODO Auto-generated method stub 
    
                                                                            } 
                                                                    }).show(); 
                                    return true; 
                            } 
                    }); 
    
            } 
    }
    
    
    
    
    -----------
    listviewrow.xml
    
    代码片段, <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/listviewbg"
        android:orientation="vertical" > 
    
        <TextView 
            android:id="@+id/tv_name"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="@android:color/black" /> 
    
        <TextView 
            android:id="@+id/tv_price"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="@android:color/black" /> 
    
    </LinearLayout>
  • 相关阅读:
    Jmeter之检查点
    Jmeter之集合点
    Jmeter之参数化
    Jmeter组件认识
    Jmeter目录认识
    sts的web工程创建
    Jmeter的BeanShell脚本开发
    Jmeter插件开发
    Appium配置app老是反复安装问题的处理
    eclipse通过git代码的下载和上传
  • 原文地址:https://www.cnblogs.com/yejiurui/p/3247527.html
Copyright © 2020-2023  润新知