activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.MainActivity">
<GridView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/gridView"
android:numColumns="4"></GridView>
</LinearLayout>

Article.java

package com.pingyijinren.helloworld.model;

/**
* Created by Administrator on 2016/6/3 0003.
*/
public class Article {
private int imageId;
private String name; public Article(int imageId,String name){
this.imageId=imageId;
this.name=name;
} public int getImageId() {
return imageId;
} public String getName() {
return name;
}
}

grid_item.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"> <ImageView
android:layout_width="match_parent"
android:layout_height="100dp"
android:id="@+id/image"/> <TextView
android:layout_width="match_parent"
android:layout_height="20dp"
android:id="@+id/name"/>
</LinearLayout> <ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="right|top"
android:src="@drawable/cancel"
android:id="@+id/delete"/>
</FrameLayout>

ArticleAdapter.java

package com.pingyijinren.helloworld.adapter;

import android.content.Context;
import android.text.Layout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView; import com.pingyijinren.helloworld.R;
import com.pingyijinren.helloworld.model.Article; import java.util.ArrayList;
import java.util.List; /**
* Created by Administrator on 2016/6/3 0003.
*/
public class ArticleAdapter extends ArrayAdapter<Article>{
private boolean ifShowDelete=false;
private ArrayList<Article> arrayListArticle;
private int index;
public ArticleAdapter(Context context, int resource, List<Article> objects) {
super(context, resource, objects);
arrayListArticle=(ArrayList<Article>)objects;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView==null){
convertView= LayoutInflater.from(getContext()).inflate(R.layout.grid_item,null);
viewHolder=new ViewHolder();
viewHolder.image=(ImageView) convertView.findViewById(R.id.image);
viewHolder.name=(TextView)convertView.findViewById(R.id.name);
viewHolder.delete=(ImageView)convertView.findViewById(R.id.delete);
convertView.setTag(viewHolder);
}
else{
viewHolder=(ViewHolder) convertView.getTag();
}
Article article=getItem(position);
viewHolder.image.setImageResource(article.getImageId());
viewHolder.name.setText(article.getName()); index=position;
if(ifShowDelete){
viewHolder.delete.setVisibility(View.VISIBLE);
viewHolder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
arrayListArticle.remove(index);
notifyDataSetChanged();
}
});
}
else{
viewHolder.delete.setVisibility(View.GONE);
}
return convertView;
} private class ViewHolder{
public ImageView image;
public TextView name;
public ImageView delete;
} public void setIfShowDelete(boolean ifShowDelete) {
this.ifShowDelete = ifShowDelete;
}
}

MainActivity.java

package com.pingyijinren.helloworld.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView; import com.pingyijinren.helloworld.R;
import com.pingyijinren.helloworld.adapter.ArticleAdapter;
import com.pingyijinren.helloworld.model.Article; import java.util.ArrayList; public class MainActivity extends AppCompatActivity {
private GridView gridView;
private ArrayList<Article> arrayListArticle;
private ArticleAdapter articleAdapter;
private boolean ifShowDelete=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); gridView=(GridView)findViewById(R.id.gridView);
arrayListArticle=new ArrayList<Article>();
arrayListArticle.add(new Article(R.drawable.first_image,"frist"));
arrayListArticle.add(new Article(R.drawable.second_image,"second"));
articleAdapter=new ArticleAdapter(MainActivity.this,R.layout.grid_item,arrayListArticle);
gridView.setAdapter(articleAdapter); gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
articleAdapter.setIfShowDelete(true);
articleAdapter.notifyDataSetChanged();
ifShowDelete=true;
return false;
}
});
} @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
if(ifShowDelete==true){
if(arrayListArticle.size()==0){
finish();
}
else{
articleAdapter.setIfShowDelete(false);
articleAdapter.notifyDataSetChanged();
ifShowDelete=false;
} }
else{
finish();
}
}
return false;
}
}

GridView动态删除Item的更多相关文章

  1. 【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题

    前言 这个问题在之前做一个盒子项目时遇到过,最近又遇到了,使用GridView遇到的非常奇葩的问题,这里记录分享一下. 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnb ...

  2. android实现界面左右滑动(GridView动态设置item,支持每个item按某个属性排序来显示在不同的界面)

    效果图 :                         分别是第一页.第二页.第三页,随手截的图,不整齐,勿见怪.开始走了弯路,废了不少时间. 思路如下: 1.用ViewPager实现左右分页滑动 ...

  3. Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

    本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877) 今天还是给大家带来自定义控件的编写,自定义一个Lis ...

  4. baseadapter.getItemId的使用方法:实现listview筛选、动态删除

    转载:http://www.lai18.com/content/1631131.html 这里的listview筛选是指listview的adapter实现filter来过滤数据. “动态删除&quo ...

  5. GridView动态增加行

    GridView动态增加行GridView动态增加行 很多时候,我们需要可编辑的表格,来比较方便的进行数据的录入,比如学习成绩的录入.当然这就要求能够动态的增加行,来一次性录入多个学生的信息.现在用A ...

  6. Android 高级UI设计笔记03:使用ListView实现左右滑动删除Item

    1. 这里就是实现一个很简单的功能,使用ListView实现左右滑动删除Item: (1)当我们在ListView的某个Item,向左滑动显示一个删除按钮,用户点击按钮,即可以删除该项item,并且有 ...

  7. 【转】Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

    原文网址:http://blog.csdn.net/xiaanming/article/details/17539199 转帖请注明本文出自xiaanming的博客(http://blog.csdn. ...

  8. [转]Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17539199),请尊重他人的辛勤劳动成果,谢谢! 我在上一 ...

  9. 利用ListView批量删除item

    利用CheckBox选中一个或多个item,最后批量删除它们. 程序运行效果图如下: package com.test.adapter; import java.util.ArrayList; imp ...

随机推荐

  1. windows10 下安装、配置、启动mysql

    下载mysql 可以自行去百度 或者 https://dev.mysql.com/downloads/mysql/5.7.html#downloads 解压mysql-5.7.26-winx64.zi ...

  2. PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)

    PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)  http://www.patest.cn/contests/pat-b-practise/1027 本题 ...

  3. C语言格式化说明符

    1.1.1 格式化输入输出函数一.printf()函数printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息.在编写程序时经常会用到此函数.printf()函数的调用格式为: ...

  4. 欧拉函数φ(x)简要介绍及c++实现

    我还是很喜欢数论,从此吃喝不问,就此沉沦. 欧拉函数φ(x)的值为在[1,x)的区间内与x互质的数的个数 通式:    其中p1, p2……pn为x的所有质因数,x是不为0的整数.φ(1)=1. 注意 ...

  5. Hdu 3177 (贪心)

    题目大意: 山洞的体积为\(v\) 第\(i\)个物品放在山洞里会占据\(a_i\)的空间,在搬运过程中至少需要\(b_i\)的空间 问能不能把所有物品都放下 贪心题.比较难看出贪心,但是从无顺序要求 ...

  6. layer的iframe层的传参和回参

    从父窗口传参给iframe,参考://https://yq.aliyun.com/ziliao/133150 从iframe回参给父窗口,参考:https://www.cnblogs.com/jiqi ...

  7. mysql:having 用法

    顺序:where -> group by -> min -> order by -> limit 在select语句中使用having 子句来指定一组行或聚合的过滤条件 hav ...

  8. 分析laravel的核心日志类

    首先是容器 log对应的是application这个容器 首先我们查看如何获取这个日志类,我们来到\storage\app.php中找到application这个容器,点进去, 我们来到了 点击这个跳 ...

  9. tiny4412 busybox制作根文件系统rootfs nfs 挂载 ubuntu 14.04

    http://blog.csdn.net/liudijiang/article/details/50555429(转) 首先得要有制作好的uboot和linux内核镜像zImage,先烧录到sd卡里, ...

  10. django的rest framework框架——版本、解析器、序列化

    一.rest framework的版本使用 1.版本可以写在URL中,通过GET传参,如 http://127.0.0.1:8082/api/users/?version=v1 (1)自定义类获取版本 ...