• Android编程知识点1-Button,ListView


    一. Button按钮

    (1)一个按钮对应一个事件监听器

    事件监听器:在onCreate()函数中添加下面的事件监听器。

    Button button=(Button)findViewById(R.id.button01);
    button.setOnClickListener(new View.OnClickListener()
    {
         public void onClick(View view)
        {
            具体内容...
        }
    });

    (2)多个按钮对应一个事件监听器

    Button.onClickListener buttonListener=new Button.OnClickListener()
    {
        @override
        public void onClick(View v)
        {
            switch(v.getId())//得到组件的ID号
            {
            case R.id.button01: //如果id号是button01,进行下面操作
                ....
                return;
            case R.id.button02: //如果id号是button02,进行下面操作
                ....
                return;
            }
        }
    };
    button01.setOnClickListener(buttonListener); //这个button01是名字,上面的button01是这个名字的id
    button02.setOnClickListener(buttonListener);

    二. ListView

    listview能够通过适配器将数据和显示控件绑定,在有限的屏幕上提供大量内容供用户选择

    在main.xml文件中,声明ListView组件

    <ListView
            android:id="@+id/listview01"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
     </ListView>

    在ListViewDemo.java文件中(应该就是MainActivity.java文件),创建适配器

     ListView listview=(ListView)findViewById(R.id.listview01);
     List<String>list=new ArrayList<String>(); //声明数组列表
     list.add("listview子项1");
     list.add("listview子项2");
     //声明适配器,下面的第三个参数list说明适配器的数据源为数组列表
     ArrayAdapter<String>adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
     //将listview和适配器绑定
     listview.setAdapter(adapter);

     添加子项在后面若是往ListView上增加信息,即增加子项,用法(一般在按钮的点击事件中)

    ArrayAdapter temp_adp=(ArrayAdapter) listview.getAdapter();  //上面是set,这里是get
    //et_a这个为一些在EditText上用户输入的信息 temp_adp.add(et_c.getText().toString()
    +" "+et_a.getText().toString()+" "+et_n.getText().toString());

    在ListViewDemo.java文件中(应该就是MainActivity.java文件),声明ListView子项的点击事件监听器

     AdapterView.OnItemClickListener listViewListener=new AdapterView.OnItemClickListener()
     {
         @override
         public void onItemClick(AdapterView<?>arg0,View arg1,int arg2,long arg3)
         {
             String msg="father view:"+arg0.toString()+"son view"+arg1.toString();
             ......
         }
     };
     //ListView指定刚声明的适配器
     listview.setOnItemClickListener(listViewListener);
    //arg0:适配器控件,这里是listview
    //arg1:适配器内部的控件,这里是ListView的子项
    //arg2:子项的位置
    //arg3:子项的行号

     删除子项

     需要先建立一个文件,smenul.xml文件,在res下面建一个menu目录,然后在该目录下建立一个文件smenu1

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="200dp"
        android:layout_height="50dp"
        >
        <item
            android:id="@+id/menu1"
            android:orderInCategory="100"
            android:title="删除">
    
        </item>
    
    </menu>

    接下来就是设置长按子项进行删除

    //listview的长按子项事件
     //PopupMenu是种显示位置不固定的弹出菜单,因为它显示在参照控件下方,所以展示位置随着参照控件的位置变化而变化
     //第一参数是上下文对象,参数二是你点击了啥才显示PopupMenu的那个监听的View(这里是子项)
     //R.menu.smenu1是布局文件
     listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
                @Override
    
                public boolean onItemLongClick(AdapterView<?> parent,View view,final int position, long id){
                    if(id > 0)
                    {
                        PopupMenu popup = new PopupMenu(MainActivity.this,view);
                        popup.getMenuInflater().inflate(R.menu.smenu1,popup.getMenu());
                        popup.show();
                        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
                            @Override
                            public boolean onMenuItemClick(MenuItem item){
                                switch (item.getItemId()){
                                    case R.id.menu1:
                                        ArrayAdapter temp_adp = (ArrayAdapter) lv1.getAdapter();
                                        temp_adp.remove(temp_adp.getItem(position));
                                        return true;
                                    default:
                                        return false;
                                }
                            }
    
                        });
                    }
                    return true;
    
                }
            });

     

     

  • 相关阅读:
    Java IO流面试题
    Oracle和MySql的区别
    Mybatis与Hibernate不同处
    java 多线程面试题
    Java 异常面试题
    Http中Get和Post请求方式的区别
    Mybatis常见面试题(转)
    解决:Adb connection Error:远程主机强迫关闭了一个现有的连接
    option的value、text与label 古老的bug
    测试
  • 原文地址:https://www.cnblogs.com/loyolh/p/9964449.html
Copyright © 2020-2023  润新知