Android_gridView_LIstener_examle
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的更多相关文章
随机推荐
- 17、手势(Gesture)
课程目标: 学习Android必不可少的手势的功能 了解手势识别原理 , 掌握制作,加载以及识别手势 写出自己的手势Demo 重点难点:手势机制的了解 手势库的制作 考核目标:请说一下手势库的 ...
- Zabbix探索:使用msmtp进行邮件告警
在Nagios时代就已经使用msmtp发送告警了,不过那时候偷懒,使用mutt发送来简化格式. 在Zabbix时代,更多人使用msmtp,所以官方论坛上有个zext_msmtp.sh的脚本,但是不要以 ...
- Lua语法
1.Lua保留的关键字: and,bread,do,else,elseif,end,false,for,function,if,in,local,nil,not,or,repeat,return ,t ...
- 【译】 AWK教程指南 6在AWK程序中使用Shell命令
awk程序中允许调用Shell指令,并提供管道解决awk与系统间数据传递的问题.所以awk很容易使用系统资源,读者可利用这个特点来编写某些适用的系统工具. 范例:写一个awk程序来打印出线上人数. 将 ...
- 【译】 AWK教程指南 1前言
前面的话: 这几天写了一个程序,在同一个目录里生成了很多文件,需要统计其中部分文件的总大小,发现经常用到的ls.du等命令都无济于事,我甚至都想到了最笨的方法,写一个脚本:mkdir一个新目录,把要统 ...
- [九度OJ]1078.二叉树的遍历(重建)
原题链接:http://ac.jobdu.com/problem.php?pid=1078 题目描述: 二叉树的前序.中序.后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其 ...
- HW7.1
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- [C语言 - 13] 运算符
算术运算符 运算符的优先级 括号 > 正负 > 数学运算 > 位运算 > 数学对比 > 逻辑对比 > 条件运算 > 赋值运算 A.赋值运算符 复合赋值运算 ...
- 弹出框JBox实例
前几天做的考试系统的一些后台弹出框的一些模板.主要是因为普通的弹出框样式不是很好,颜色也不能调换.这里我们用的是JBox,还是从师傅那得知的.自己小实验了下,这里就做个小结. JBox 插件说明 - ...
- CSS构造模型
div 边距 边框 定位 浮动 21.1 div 部分(division)---<div>元素,经常以div形式引用---是XHTML元素,用于定义XHTML文件中的区域. 1.添加div ...