实验目的:
1.学习使用ListView及其事件响应方法。
2.阅读sdk/doc/index脱机文档或者在Android developer开发者网站上,学习使用弹出菜单PopupMenu及其事件响应方法。
实验要求:
1.实现一个列表,其中显示班级学号姓名,提供添加功能
2.对添加的选项,通过长按某项,调用弹出菜单显示删除功能,并删除该选项。
MainActivity.java
package com.example.shiyan3;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.PopupMenu;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
List list;
ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText t1=(EditText) findViewById(R.id.edit_1);
EditText t2=(EditText) findViewById(R.id.edit_2);
EditText t3=(EditText) findViewById(R.id.edit_3);
ListView listView = (ListView)findViewById(R.id.listview);
Button bt= (Button) findViewById(R.id.button);
list = new ArrayList();
list.add("班级 姓名 学号");
adapter=new ArrayAdapter(this,R.layout.support_simple_spinner_dropdown_item,list);
listView.setAdapter(adapter);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.add(t1.getText().toString()+" "+t2.getText().toString()+" "+t3.getText().toString());
adapter.notifyDataSetChanged();
}
});
AdapterView.OnItemLongClickListener lclistener=new AdapterView.OnItemLongClickListener()
{
@Override
public boolean onItemLongClick(AdapterView> adapterView, View view, int i, long l) {
popupshow(view,i);
adapter.notifyDataSetChanged();
return false;
}
};
listView.setOnItemLongClickListener(lclistener);
}
public void popupshow(View v,int i){//自定义函数
PopupMenu popup=new PopupMenu(this,v);
popup.setGravity(Gravity.CENTER_HORIZONTAL);
MenuInflater inflater=popup.getMenuInflater();
inflater.inflate(R.menu.popupmenu,popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if(item.getItemId()==R.id.delete)
{
list.remove(i);
adapter.notifyDataSetChanged();
}
return false;
}
});
if(i!=0) popup.show();//防止把第一行给删了
}
}
activity_main.xml
popupmenu.xml



