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; } });