长按 删除 ListView选项



 delete_title.xml 部分:

 

</pre><pre name="code" class="java"> <ImageView

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:src="@android:drawable/ic_menu_delete"

       android:layout_marginRight="10dp"

       android:id="@+id/imageView" />

 

   <TextView

       android:layout_width="match_parent"

       android:layout_height="wrap_content"

       android:text="删除"

       android:textColor="#ffffff"

       android:textSize="20dp"

       android:id="@+id/textView2" />

</LinearLayout>


———————————————————————————————————————

 

activity_main.xml

 

<ListView

       android:layout_width="match_parent"

       android:layout_height="match_parent"

       android:id="@+id/listView"

       android:layout_alignParentTop="true"

       android:layout_alignParentStart="true" />

</RelativeLayout>


——————————————————————————————————————————————

 

 

public class User {

   private int id;

   private String name;

 

   public User() {

    }

 

   public User(int id, String name) {

       this.id = id;

        this.name = name;

    }

 

   public int getId() {

       return id;

    }

 

   public void setId(int id) {

       this.id = id;

    }

 

   public String getName() {

       return name;

    }

 

   public void setName(String name) {

       this.name = name;

    }

}


 

——————————————————————————————————————

 

public class Main3Activity extendsAppCompatActivity {

 

    private static final int DELETE_ITEM = 0x100;

   private ListView listView;

   private MyAdapter myAdapter;

   private LinkedList<User> users = new LinkedList<>();

   @Override

   protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main3);

       listView = (ListView) findViewById(R.id.listView);

        initData();

       myAdapter = new MyAdapter(this,users);

       listView.setAdapter(myAdapter);

       registerForContextMenu(listView);

    }

 

   @Override

    public void onCreateContextMenu(ContextMenumenu, View v, ContextMenu.ContextMenuInfo menuInfo) {

       super.onCreateContextMenu(menu, v, menuInfo);

       menu.setHeaderIcon(android.R.drawable.ic_menu_delete);//设置菜单的标题图标

       menu.setHeaderTitle("删除");//设置菜单的标题

       //自定义标题

//       View view = getLayoutInflater().inflate(R.layout.delete_title,null);

//       menu.setHeaderView(view);

       System.out.println(menuInfo);

       //menuInfo : 菜单信息(targetView,position,id)

       //通过在menuInfo上获取长按列表项的视图对象,我们可以从该对象上获取数据

       AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;

       System.out.println(info.targetView);//列表项视图组件

       TextView tv_id = (TextView) info.targetView.findViewById(R.id.textView2_id);

       menu.add(0,DELETE_ITEM,100,"你真的要删除ID为["+tv_id.getText().toString()+"]的记录吗?");

    }

 

   @Override

   public boolean onContextItemSelected(MenuItem item) {

       AdapterView.AdapterContextMenuInfo info =(AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

       TextView tv_id = (TextView) info.targetView.findViewById(R.id.textView2_id);

       int id = Integer.parseInt(tv_id.getText().toString());

       remove(id);

       myAdapter.notifyDataSetChanged();

       return super.onContextItemSelected(item);

    }

 

   private void remove(int id){

       int size = users.size();

       User temp;

       for (int i=0;i<size;i++){

           temp = users.get(i);

           if(temp.getId()==id){

                users.remove(temp);

                break;

           }

       }

    }

 

   private void initData(){

        users.add(new User(1,"jack"));

       users.add(new User(2,"tom"));

       users.add(new User(3,"lily"));

       users.add(new User(4,"lucy"));

       users.add(new User(5,"bobo"));

    }

   private static class MyAdapter extends BaseAdapter{

 

       private Context context;

       private LinkedList<User> users;

       public MyAdapter(Context context, LinkedList<User> users){

           this.context = context;

           this.users = users;

       }

       @Override

       public int getCount() {

           return users.size();

       }

 

       @Override

       public Object getItem(int position) {

           return users.get(position);

       }

 

       @Override

       public long getItemId(int position) {

            return position;

       }

 

       @Override

       public View getView(int position, View convertView, ViewGroup parent) {

           ViewHolder vh;

           if(convertView==null){

                convertView =LayoutInflater.from(context).inflate(R.layout.item,null);

                vh = new ViewHolder();

                vh.tv_id = (TextView)convertView.findViewById(R.id.textView2_id);

                vh.tv_name = (TextView)convertView.findViewById(R.id.textView3_name);

                convertView.setTag(vh);

           }else{

                vh = (ViewHolder)convertView.getTag();

           }

           User u = users.get(position);

           vh.tv_id.setText(String.valueOf(u.getId()));

           vh.tv_name.setText(u.getName());

           return convertView;

       }

 

       private static class ViewHolder{

           TextView tv_id;

           TextView tv_name;

       }

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值