layout.xml

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:horizontalSpacing="2dp"
android:verticalSpacing="2dp"
></GridView> </RelativeLayout>

gridview_item.xml

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="100dp"
android:src="@drawable/ic_launcher"
/>
<ImageView
android:id="@+id/image_delete"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:src="@drawable/delete"
/> </RelativeLayout>

MyAdapter.java

package com.example.day09_gridview_listener;

import java.util.List;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.Toast; class MyAdapter extends BaseAdapter{
private List<Integer> dataList;
private Context context;
private boolean isShow = false; public MyAdapter(List<Integer> dataList, Context context) {
super();
this.dataList = dataList;
this.context = context;
} public boolean getisShow() {
return isShow;
} public void setisShow(boolean isShow) {
this.isShow = isShow;
//更新数据
notifyDataSetChanged();
} @Override
public int getCount() {
return dataList.size();
} @Override
public Object getItem(int position) {
return dataList.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = View.inflate(context, R.layout.gridview_item, null);
ImageView image = (ImageView) view.findViewById(R.id.image);
ImageView deleteImg = (ImageView) view.findViewById(R.id.image_delete);
//设置删除图标是否显示 可编辑?显示:消失
Log.i("MainActivity---------", getisShow()+""); deleteImg.setVisibility(isShow?View.VISIBLE:View.GONE);
image.setImageResource(dataList.get(position)); deleteImg.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
Toast.makeText(context, "点击了XX", 0).show();
dataList.remove(dataList.get(position));
notifyDataSetChanged();
}
}); return view;
} }

Main.java

package com.example.day09_gridview_listener;

import java.util.ArrayList;
import java.util.List; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
/**
* 需求:gridView实现点击X按钮实现删除图片的功能
*
* 1.初始化控件
* 2.初始化数据
* 3.实现BaseAdapter中方法将数据填充
* 1.初始页面
* 2.设置长按监听事件
* 1.普通操作--不操作
* 2,编辑操作--长按显示x图标
* 1.点击x图标删除该图片,更新view
* 3.设置点击监听事件
* 1,编辑操作--不操作
* 2.普通操作--点击恢复原状,x图标消失=
* 4.创建适配器
* 5.设置适配器
* @author my
*
*/
public class MainActivity extends Activity {
private int imageRes[] = {R.drawable.f000,R.drawable.f001,R.drawable.f002,R.drawable.f003,R.drawable.f004,R.drawable.f005,R.drawable.f006,R.drawable.f007,R.drawable.f008};
private List<Integer>list;
private GridView gridView;
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.gridView);
//设置数据源
list = getListByArray();
myAdapter = new MyAdapter(list,MainActivity.this);
//设置适配器
gridView.setAdapter(myAdapter);
//设置单击事件
gridView.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this, "单击", 0).show();
if(myAdapter.getisShow()){
myAdapter.setisShow(false);
}else{
}
}
});
//设置长按事件
gridView.setOnItemLongClickListener(new OnItemLongClickListener() { @Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this, "长按", 0).show();
if(myAdapter.getisShow()){
}else{
myAdapter.setisShow(true);
}
return true;
}
});
}
private List<Integer> getListByArray() {
list = new ArrayList<Integer>();
for (int i = 0; i < imageRes.length; i++) {
list.add(imageRes[i]);
}
return list;
} }

普通状态

长按

删除

Android_gridView_LIstener_examle的更多相关文章

随机推荐

  1. 劳动节BT5 aircrack-ng战记

    劳动节最后一天没事,想捣鼓一下BT5破解无线wep/wpa,BT5+virtual box早已准备就绪,上网专门找了一些资料,并买了一个据评测很兼容的usb网卡tp-link wn722n,芯片代号A ...

  2. [原]SyntaxHighlighter使用笔记

    [Date]2013-09-21 [Environment]SyntaxHighlighter 3.0.83 [Author]wintys (wintys@gmail.com) http://wint ...

  3. 问题:关于贴友一个用js传递value默认值的简单实现

    需求和代码如下: “这是我的代码:” 1: <input type="text" id="price2" value="333"/&g ...

  4. Windows下ffmpeg的完美编译

    纠结了好几天,终于搞定了,小结一下. 1.下载ffmpeg源码,官网 2.编译环境Msys的安装配置,http://blog.csdn.net/jszj/article/details/4028716 ...

  5. HW6.23

    public class Solution { public static void main(String[] args) { boolean[] box = new boolean[101]; f ...

  6. java日志,(commons-loging 、log4j 、slf4j 、LogBack介绍)

    如果对于commons-loging .log4j .slf4j .LogBack 等都已经非常清楚了,可以忽略本文.几次解决日志冲突问题时对这几个概念的简单总结,希望对这块基础没有理解透的同学能有所 ...

  7. RPi Debian Auto Login

    This guide will show you how to login to a Debian image and start LXDE by simply powering the Pi on. ...

  8. Java HashMap 源码解析

    今天正式开始分析具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 签名(signature) public class HashMap<K,V> extends Abstract ...

  9. hdu 1597 find the nth digit

    find the nth digit Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  10. Notepad++的一些常用的快捷键

    ctrl+/  一个一个单词的往后跳Ctrl+H 替换Ctrl+F  查找Ctrl+D 复制当前行到下一行Ctrl+L 删除当前行Ctrl+Shift+F 在文件中找F5 打开run对话框F11 全屏 ...