zoukankan      html  css  js  c++  java
  • 一手遮天 Android

    项目地址 https://github.com/webabcd/AndroidDemo
    作者 webabcd

    一手遮天 Android - view(ListView): ListView 长按弹出上下文菜单

    示例如下:

    /view/listview/ListViewDemo9.java

    /**
     * ListView 长按弹出上下文菜单
     *
     * 有两种方式可以实现
     * 第 1 种方式: registerForContextMenu()
     * 第 2 种方式: setOnCreateContextMenuListener()
     */
    
    package com.webabcd.androiddemo.view.listview;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.ContextMenu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    
    import com.webabcd.androiddemo.R;
    
    import java.util.Locale;
    
    public class ListViewDemo9 extends AppCompatActivity {
    
        private ListView _listView1;
        private ListView _listView2;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_view_listview_listviewdemo9);
    
            _listView1 = (ListView) findViewById(R.id.listView1);
            _listView2 = (ListView) findViewById(R.id.listView2);
    
            sample();
        }
    
        private void sample() {
            String[] arrayData = {"中国", "美国", "日本"};
            _listView1.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayData));
            _listView2.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayData));
    
            // 第 1 种方式: 通过 registerForContextMenu() 实现 ListView 长按弹出上下文菜单
            this.registerForContextMenu(_listView1);
    
            // 第 2 种方式: 通过 setOnCreateContextMenuListener() 实现 ListView 长按弹出上下文菜单
            _listView2.setOnCreateContextMenuListener(mCreateContextMenuListener);
        }
    
        // 第 1 种方式: 通过 registerForContextMenu() 构造上下文菜单
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            menu.setHeaderTitle("title");
            menu.add(0, 11, 1, "item 1");
            menu.add(0, 22, 2, "item 2");
            menu.add(0, 33, 3, "item 3");
        }
    
        // 第 2 种方式: 通过 setOnCreateContextMenuListener() 构造上下文菜单
        private View.OnCreateContextMenuListener mCreateContextMenuListener= new View.OnCreateContextMenuListener() {
            @Override
            public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
                contextMenu.setHeaderTitle("title");
                contextMenu.add(0, 111, 1, "item 1");
                contextMenu.add(0, 222, 2, "item 2");
                contextMenu.add(0, 333, 3, "item 3");
            }
        };
    
        // 第 1 种方式和第 2 种方式实现的 ListView 长按弹出上下文菜单,在选中菜单项后都会走到这里
        @Override
        public boolean onContextItemSelected(MenuItem item) {
            // 获取当前被选中的 item 的信息
            AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
    
            // item.getItemId() - 被选中的菜单项的 id
            // menuInfo.position - 被选中的数据项的索引位置
            Toast.makeText(this, String.format(Locale.US, "menuItemId:%d, dataItemPosition:%d", item.getItemId(), menuInfo.position), Toast.LENGTH_SHORT).show();
    
            return true;
        }
    
    
    
    
    }
    
    
    
    

    /layout/activity_view_listview_listviewdemo9.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:orientation="vertical">
    
        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    
        <ListView
            android:id="@+id/listView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"/>
    
    </LinearLayout>
    
    

    项目地址 https://github.com/webabcd/AndroidDemo
    作者 webabcd

  • 相关阅读:
    201671010135 2016--2017<java程序设计:学习总结>
    201671010135 2016--2017--《java程序设计:图形程序设计》
    201671010135 2016--2017--《java程序设计:第就章存在问题》
    201671010135 2016--2017--《java程序设计:泛型数组设计学习总结》
    201671010135 2016--2017--《java程序设计:第七章 异常,断言和日志》
    2016710101352016-2017-2 《JAVA程序设计》第八周学习总结
    201671010145 赵乾 学习统计
    201671010145 2016-2017 《JAVA程序设计》Java线程:线程的同步-同步方法
    201671010145 2016-2017《Java程序设计》Java中进程与线程的区别
    201671010145 2016-2017《Java程序设计》 如何进行JAVA项目打包部署?
  • 原文地址:https://www.cnblogs.com/webabcd/p/android_view_listview_ListViewDemo9.html
Copyright © 2011-2022 走看看