Android imitation QQ long according to the picture to delete the label, select Delete Picture example

Source: Internet
Author: User

In the upload of multiple images we usually choose a lot of pictures, and then we can long press one of the pictures, when all the pictures will show a deleted corner, we click on one of them can delete the image, the effect of the picture:

The code is easy to read and posted directly:

Package Zm.imageview;

Import android.app.Activity;
Import Android.content.Context;
Import Android.os.Bundle;
Import Android.view.LayoutInflater;
Import Android.view.View;
Import Android.view.ViewGroup;
Import Android.widget.AdapterView;
Import Android.widget.BaseAdapter;
Import Android.widget.GridView;
Import Android.widget.ImageView;
Import Android.widget.TextView;
Import Android.widget.Toast;
Import Com.squareup.picasso.Picasso;
Import java.util.ArrayList;
Import java.util.List;


public class Mainactivity extends activity {
Private Boolean isshowdelete = false;
Private GridView GV;
Private Gridviewadapter Mgridadapter;
Private list<areaentity> areaeneities = new arraylist<areaentity> ();

@Override
protected void OnCreate (Bundle savedinstancestate) {
Super.oncreate (savedinstancestate);
Setcontentview (R.layout.activity_main);
GV = (GridView) Findviewbyid (R.ID.GV);
for (int i = 0; i < i++) {
Areaentity areaentity = new Areaentity (i + "", "http://img.tuku.cn/file_big/201504/ 024448d7ae994d4d9273ea5f3c199a5a.jpg "," landscape "+ i);
Areaeneities.add (areaentity);
}
Mgridadapter = new Gridviewadapter (areaeneities, mainactivity.this);
Gv.setadapter (Mgridadapter);
Gv.setonitemlongclicklistener (New Adapterview.onitemlongclicklistener () {
@Override
public Boolean Onitemlongclick (adapterview<?> parent, view view, int position, long ID) {
if (isshowdelete) {
Isshowdelete = false;
} else {
Isshowdelete = true;
}
Mgridadapter.setisshowdelete (Isshowdelete);
return true;
}
});
}

    @Override
    public void onbackpressed () {
         super.onbackpressed ();
        if (isshowdelete = = True) {
      & nbsp;     Isshowdelete = false;
            Mgridadapter.setisshowdelete (false);
       } else {
             finish ();
       }
   }

    class Gridviewadapter extends Baseadapter {
        Private Boolean isshowdelete;//based on this Boolean variable to determine whether to display the delete icon, True is displayed, False is not displayed
         Private list<areaentity> areaeneity;
        private Layoutinflater minflater;
        Private context mcontext;

Public Gridviewadapter (list<areaentity> areaeneities) {
Super ();
this.areaeneity = areaeneities;
This.minflater = Layoutinflater.from (context);
This.mcontext = context;
}

public void Setisshowdelete (Boolean isshowdelete) {
This.isshowdelete = Isshowdelete;
Notifydatasetchanged ();
}

@Override
public int GetCount () {
return Areaeneity.size ();
}

@Override
Public Object getitem (int position) {
return Areaeneity.get (position);
}

@Override
public long getitemid (int position) {
return position;
}

@Override
Public View GetView (final int position, View Convertview, ViewGroup parent) {

Viewholder Holder;
if (Convertview = = null) {
Convertview = minflater.inflate (R.layout.fragmet_grid_item, NULL);
Holder = new Viewholder ();
Holder.img = (ImageView) Convertview.findviewbyid (r.id.img);
HOLDER.NAME_TV = (TextView) Convertview.findviewbyid (R.ID.NAME_TV);
Holder.deleteview = Convertview.findviewbyid (R.id.delete_markview);
Convertview.settag (holder);
} else {
Holder = (viewholder) convertview.gettag ();
}
Picasso.with (Mcontext). Load (areaeneity.get (position). Getpic ()). into (HOLDER.IMG);
Holder.name_tv.setText (Areaeneity.get (position). Getarea ());
Holder.deleteView.setVisibility (isshowdelete?) View.VISIBLE:View.GONE);
Holder.deleteView.setOnClickListener (New View.onclicklistener () {
@Override
public void OnClick (View v) {
Toast.maketext (Mcontext, "you deleted the first" + areaeneity.get (position). GetId () + "Zhang", Toast.length_short). Show ();
Areaeneity.remove (Areaeneity.get (position));
Notifydatasetchanged ();
}
});
return convertview;
}

Class Viewholder {
Private View Deleteview;
Private ImageView img;
Private TextView Name_tv;
}
}

Class Areaentity {
Private String ID;
Private String pic;
Private String area;

Public areaentity (String ID, string pic, string area) {
This.id = ID;
This.pic = pic;
This.area = area;
}

Public String Getpic () {
return pic;
}

public void Setpic (String pic) {
This.pic = pic;
}

Public String getId () {
return ID;
}

public void SetId (String id) {
This.id = ID;
}

Public String Getarea () {
return area;
}

public void Setarea (String area) {
This.area = area;
}
}
}

The picture I'm showing is a random selection from the Internet, the loading framework is Picasso, and developers using Android Studio can introduce a line of code directly into dependencies:

Compile ' com.squareup.picasso:picasso:2.5.2 '

And don't forget to add network privileges.

<uses-permission android:name= "Android.permission.INTERNET" ></uses-permission>
OK, the function is realized.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.