android gridview布局,实现长按某一个,所有项都显示删除的图标

最近一直忙着项目开发,有段时间没有写博文了,今天想跟大家分享的是长按gridview中的某一项显示删除图标,此时点击某项便可删除,再长按取消删除图标。

gridview的布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll_grid_item"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >
  <FrameLayout
        android:id="@+id/starred_item_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center" >
        <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:background="@drawable/bg_btn_selector_deny"
      android:gravity="center"
      android:orientation="vertical"
      android:layout_marginTop="4dip"
      android:layout_marginRight="4dip" >
      <ImageView
          android:id="@+id/img"
          android:layout_width="60dip"
          android:layout_height="55dip" />
      <TextView
          android:id="@+id/name_tv"
          android:layout_width="70dip"
          android:layout_height="wrap_content"
          android:layout_marginTop="10dip"
          android:textColor="@android:color/black"
          android:textSize="15sp"
          android:textStyle="bold"
          android:gravity="center" />
     </LinearLayout>
      <ImageView
            android:id="@+id/delete_markView"
            android:layout_width="20dip"
            android:layout_height="20dip"
            android:adjustViewBounds="true"
            android:layout_gravity="right|top"
            android:visibility="gone"
            android:src="@drawable/delete"
           />
  </FrameLayout>
</LinearLayout>

gridview的adapter如下:

public class GridViewAdapter extends BaseAdapter{
 private String names[];

private int icons[];
 private Context mContext;
 private TextView name_tv;
 private ImageView img;
 private View deleteView;
 private boolean isShowDelete;//根据这个变量来判断是否显示删除图标,true是显示,false是不显示

 public FragmentGridViewAdapter(Context mContext,String names[], int icons[]) {
  this.mContext = mContext;
  this.names=names;

this.icons=icons;
 }
 public void setIsShowDelete(boolean isShowDelete){
  this.isShowDelete=isShowDelete;
  notifyDataSetChanged();
 }

 @Override
 public int getCount() {

  return icons.length;
 }

 @Override
 public Object getItem(int position) {
  // TODO Auto-generated method stub
  return icons[position];
 }

 @Override
 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return position;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  convertView = LayoutInflater.from(mContext).inflate(
    R.layout.fragmet_grid_item, null);
  img = (ImageView) convertView.findViewById(R.id.img);
  name_tv = (TextView) convertView.findViewById(R.id.name_tv);
  deleteView = convertView.findViewById(R.id.delete_markView);

deleteView.setVisibility(isShowDelete?View.VISIBLE:View.GONE);//设置删除按钮是否显示
  img.setBackgroundResource(icons[position]);
  name_tv.setText(names[position]);
  return convertView;
 }
}

看到这里大家是否觉得很简单呢,接下来,我们就可以在长按方法里来设置isShowDelete的值了

@Override
 public boolean onItemLongClick(AdapterView<?> parent, View view,
   int position, long id) {
     if (isShowDelete) {
    isShowDelete = false;
   } else {
    isShowDelete = true;
  }
  mGridAdapter.setIsShowDelete(isShowDelete);
  return true;
 }

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/ll_grid_item"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center"

    android:orientation="vertical" >

  <FrameLayout

        android:id="@+id/starred_item_layout"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_gravity="center" >

        <LinearLayout

      android:layout_width="fill_parent"

      android:layout_height="wrap_content"

      android:background="@drawable/bg_btn_selector_deny"

      android:gravity="center"

      android:orientation="vertical"

      android:layout_marginTop="4dip"

      android:layout_marginRight="4dip" >

      <ImageView

          android:id="@+id/img"

          android:layout_width="60dip"

          android:layout_height="55dip" />

      <TextView

          android:id="@+id/name_tv"

          android:layout_width="70dip"

          android:layout_height="wrap_content"

          android:layout_marginTop="10dip"

          android:textColor="@android:color/black"

          android:textSize="15sp"

          android:textStyle="bold"

          android:gravity="center" />

     </LinearLayout>

      <ImageView

            android:id="@+id/delete_markView"

            android:layout_width="20dip"

            android:layout_height="20dip"

            android:adjustViewBounds="true"

            android:layout_gravity="right|top"

            android:visibility="gone"

            android:src="@drawable/delete"

           />

  </FrameLayout>

</LinearLayout>

时间: 2024-10-05 05:41:41

android gridview布局,实现长按某一个,所有项都显示删除的图标的相关文章

Android GridView布局设置

先来张效果图: layout布局设置: <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&quo

Android自定义控件(四)——让每一个Activity UI都具有弹性

前面我们已经介绍了如何让你的ScrollView,ListView具有弹性, 今天,我们在前面的基础上,做一下适当的修改,让那些既不是ScrollView,也不是ListView的Activity页面,也能具有弹性. 先上图: 图中是最简单的一个Android测试程序.默认的效果TextView是无法划动的. 进过我们小小的改造,就能让整个UI具有弹性效果. 改动如下: [java] view plaincopy protected void onCreate(Bundle savedInsta

Android Animation动画实战(一): 从布局动画引入ListView滑动时,每一Item项的显示动画

前言: 之前,我已经写了两篇博文,给大家介绍了Android的基础动画是如何实现的,如果还不清楚的,可以点击查看:Android Animation动画详解(一): 补间动画 及 Android Animation动画详解(二): 组合动画特效 . 已经熟悉了基础动画的实现后,便可以试着去实现常见APP中出现过的那些精美的动画.今天我主要给大家引入一个APP的ListView的动画效果: 当展示ListView时,Listview的每一个列表项都按照规定的动画显示出来. 说起来比较抽象,先给大家

Android实现GridView的item长按拖动删除实现(带动画效果)

领导这几天让做一个项目,就是可以实现像支付宝首页一样的可以长按拖动,删除的界面,以前没做过,领导让我做的时候觉得简直是老虎吃天,无从下手啊,可是领导的任务还是要实现的,没办法,就自己网上找咯,但是网上的demo五花八门无法满足我的需求,而且bug还很多,所以最后就自己实现了,说实话,这个效果困扰了我好几个星期,因为其中牵扯的知识点太多了,什么事件分发机制,动画效果,互换位置的算法,还有拖动,这些我都没有接触过,所以只有一点一点来做咯,如果大家还没有了解过这些知识点,我建议搭建先去了解一下,毕竟这

Java-android使用GridView布局的电子相册&amp;服务器获取图片

转  http://www.tuicool.com/articles/B7JNv2 电子相册的思路: 1.先是考虑布局,我用的是GridView布局 2.GridView中又该怎么显示图片,其实我的这个应用每个图片都是同一个布局,首先要实现适配器接口,再利用充气泵LayoutInflater把布局文件转换成View视图对象 3.怎么从服务器获取图片,又是怎么捉去到的 有思路不等于你会了,直接给你上代码吧: 首先介绍下我的应用的功能: 1.显示的每一张图片,点击后都可以显示出单独的一张,并且是全屏

Android layout布局属性、标签属性总结大全

RelativeLayout 第一类:属性值为true可false android:layout_centerHrizontal        水平居中 android:layout_centerVertical         垂直居中 android:layout_centerInparent         相对于父元素完全居中 android:layout_alignParentBottom     贴紧父元素的下边缘 android:layout_alignParentLeft    

Android UI布局与控件(二)

一.View类的常用xml属性:[了解] ①.Android中所有的UI(用户界面)元素都是使用View和ViewGroup对象建立的 ②.View是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象 ③.ViewGroup是一个包含多个的View和ViewGroup的容器,用来定义UI布局. ④.Android提供了一系列的View和ViewGroup的子类,开发者可以灵活地组合使用它们来完成界面布 局.界 面元素绘制和用户交互等工作 ⑤.开发者还可以选择性地继承一些系统提供的View,来自

Android常用布局和控件

一.Android常用布局属性 1. LinearLayout的特有属性 android:orientation:设置布局排列方式   android:layout_weight:设置所占布局的权重   android:weightSum:设置最大权重和 2. RelativeLayout的特有属性 属性值为“true”或“false”android:layout_centerHrizontal:位于父控件的横向中间位置android:layout_centerVertical:位于父控件的纵向

浅谈Android五大布局

Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLayout(线性布局).FrameLayout(单帧布局).RelativeLayout(相对布局).AbsoluteLayout(绝对布局)和TableLayout(表格布局). LinearLayout: LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后