热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

带添加按钮的GridView,item的删除事件

先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve

先上图片效果;



gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:

布局文件:addr_manage.xml

xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_match_parent"  android:layout_match_parent"  android:background="@color/black"  android:paddingBottom="@dimen/px_30"  android:paddingLeft="@dimen/px_30"  android:paddingRight="@dimen/px_30"  android:paddingTop="@dimen/px_100"  tools:cOntext="com.haier.mine_wine.address.addrmanage.AddrManageActivity">

    <RelativeLayout  android:id="@+id/rl_manageBottom"  android:gravity="center_vertical"  android:layout_marginTop="@dimen/dp_20"  android:layout_alignParentBottom="true"  android:layout_match_parent"  android:layout_@dimen/px_92">
        <ImageView  android:id="@+id/iv_manaBack"  android:src="@drawable/common_back"  android:layout_@dimen/px_92"  android:layout_@dimen/px_92" />
        <ImageView  android:id="@+id/iv_backTohome"  android:src="@drawable/home"  android:layout_toRightOf="@+id/iv_manaBack"  android:layout_marginLeft="@dimen/px_10"  android:layout_@dimen/px_92"  android:layout_@dimen/px_92" />
    RelativeLayout>
    <LinearLayout  android:background="@drawable/bg"  android:orientation="vertical"  android:layout_above="@id/rl_manageBottom"  android:layout_match_parent"  android:layout_match_parent">
        <TextView  android:text="地址管理"  android:gravity="center"  color:#008000;">"@style/addr_item_style"  android:layout_match_parent"  android:layout_@dimen/px_130" />
        <GridView  android:id="@+id/gv_addrs"  android:horizOntalSpacing="@dimen/px_30"  android:verticalSpacing="@dimen/px_30"  android:numColumns="3"  android:layout_marginLeft="5px"  android:layout_marginRight="8px"  android:listSelector="@color/color_trans"  android:layout_match_parent"  android:layout_match_parent">
        GridView>
        <RelativeLayout  android:id="@+id/rl_add"  android:visibility="gone"  android:gravity="center"  android:layout_@dimen/addr_item_width"  android:layout_@dimen/addr_height">
            <ImageView  android:id="@+id/iv_add"  android:src="@drawable/addfood"  android:layout_wrap_content"  android:layout_wrap_content" />
            <TextView  android:layout_below="@+id/iv_add"  android:text="添加新地址"  android:layout_marginTop="@dimen/px_60"  color:#008000;">"@style/addr_item_style"  android:layout_wrap_content"  android:layout_wrap_content" />
        RelativeLayout>
    LinearLayout>


RelativeLayout>
 activity页面数据显示: 
 

public void showAddrList(SelDataBean bean) {
    DialogUtil.cancelRoundDialog();
    //  if(bean.getAddress_list() != null && bean.getAddress_list().size() != 0){
        rlAdd.setVisibility(View.GONE);
        gvAddrs.setVisibility(View.VISIBLE);
        addressInfoList = bean.getAddress_list();
        adapter = new AddrGridAdapter(mContext,addressInfoList,addrManagePresenter);
        gvAddrs.setAdapter(adapter);

    }else{
        if(bean.getError()!= null){
            Toast.makeText(mContext,bean.getError().toString(),Toast.LENGTH_LONG).show();
        }
        //如果没有添加任何地址信息,则只显示添加按钮  rlAdd.setVisibility(View.VISIBLE);
        gvAddrs.setVisibility(View.GONE);
        rlAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent addIntent = new Intent(mContext, AddAddrActivity.class);
                addIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(addIntent);
            }
        });
    }
}

GridView的adapter:

package com.haier.mine_wine.address.addrmanage.adapter;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.haier.mine_wine.R;
import com.haier.mine_wine.R2;
import com.haier.mine_wine.address.addAddr.AddAddrActivity;
import com.haier.mine_wine.address.addrmanage.AddrManageActivity;
import com.haier.mine_wine.address.addrmanage.bean.AddrDetail;
import com.haier.mine_wine.address.addrmanage.bean.AddressInfo;
import com.haier.mine_wine.address.addrmanage.presenter.AddrManagePresenter;
import com.haier.wine_commen.html.ServiceAddr;
import com.haier.wine_commen.util.UserLoginConfig;

import java.util.HashMap;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

/**  * Created by wangchm on 2016/9/27 0027.  * 地址管理adapter  */ public class AddrGridAdapter extends BaseAdapter {

// private static final String KEY = "d653b22472df13b7c9d36df4684ad711";  List addrs;
    Context mContext;
    AddrManagePresenter addrManagePresenter;

    public AddrGridAdapter(Context mContext, List list,AddrManagePresenter addrManagePresenter) {
        this.addrs = list;
        this.mContext = mContext;
        this.addrManagePresenter = addrManagePresenter;
    }

    @Override
    public int getCount() {
        return addrs == null ? 0 : addrs.size()+1;
    }

    @Override
    public Object getItem(int i) {
        return i;
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(final int i, View view, ViewGroup viewGroup) {
        AddrHolder holder;
        if (view == null) {
            view = LayoutInflater.from(mContext).inflate(R.layout.addr_grid_item, null);
            holder = new AddrHolder(view);
            view.setTag(holder);
        }else {
            holder = (AddrHolder) view.getTag();
        }

        //第一项显示添加按钮  if(i == 0){
            holder.rlAdd.setVisibility(View.VISIBLE);
            holder.rlInfo.setVisibility(View.GONE);
        }else{
            final AddressInfo addrDetail = addrs.get(i-1);
            holder.tvUserName.setText(addrDetail.getTrue_name());
            holder.tvPhone.setText(addrDetail.getMob_phone());
            holder.tvAddr.setText(addrDetail.getArea_info()+" "+addrDetail.getAddress());
            if(addrDetail.getIs_default().equals("1")){
                holder.ivSetDefault.setSelected(true);
                holder.tvSetDetault.setText("默认地址");
            }else{
                holder.ivSetDefault.setSelected(false);
            }

            holder.llDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                    builder.setMessage("是否确认删除该地址?");
                    final Dialog dialog = new AlertDialog.Builder(mContext).create();
                    //自定义布局  View layout =LayoutInflater.from(mContext).inflate(R.layout.mydialog,null);
                    dialog.setCancelable(false);
                    dialog.show();
                    dialog.getWindow().setContentView(layout);
                    TextView tv_title =(TextView) layout.findViewById(R.id.tv_msg);
                    tv_title.setText("是否确认删除该地址?");
                    //确认按钮  Button btn_cOnfirm= (Button) layout.findViewById(R.id.iv_submit);
                    btn_confirm.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            HashMap map = new HashMap();
                            map.put("key", UserLoginConfig.getAccessToken());
                            map.put("address_id",addrDetail.getAddress_id());
                            addrManagePresenter.delAddr(ServiceAddr.BASE_URL,map);
                            dialog.dismiss();
                        }
                    });

                    //取消按钮  Button btn_cancel = (Button) layout.findViewById(R.id.iv_cancel);
                    btn_cancel.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            dialog.dismiss();
                        }
                    });  }
            });
        }



        return view;
    }

    public class AddrHolder {
        @BindView(R2.id.tv_userName)
        TextView tvUserName;
        @BindView(R2.id.tv_phone)
        TextView tvPhone;
        @BindView(R2.id.tv_addr)
        TextView tvAddr;
        @BindView(R2.id.iv_setDefault)
        ImageView ivSetDefault;
        @BindView(R2.id.tv_setDetault)
        TextView tvSetDetault;
        @BindView(R2.id.ll_edit)
        LinearLayout llEdit;
        @BindView(R2.id.ll_delete)
        LinearLayout llDelete;

        @BindView(R2.id.rl_add)
        RelativeLayout rlAdd;

        @BindView(R2.id.rl_info)
        RelativeLayout rlInfo;

        AddrHolder(View view) {
            ButterKnife.bind(this, view);
        }
    }
}

adapter的布局文件:

xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical"  android:background="@drawable/ll_trans_border"  android:layout_match_parent"  android:layout_match_parent">
    <RelativeLayout  android:id="@+id/rl_add"  android:visibility="gone"  android:gravity="center"  android:layout_match_parent"  android:layout_@dimen/addr_height">
        <ImageView  android:id="@+id/iv_add"  android:src="@drawable/addfood"  android:layout_wrap_content"  android:layout_wrap_content" />
        <TextView  android:layout_below="@+id/iv_add"  android:text="添加新地址"  android:layout_marginTop="@dimen/px_60"  color:#008000;">"@style/addr_item_style"  android:layout_wrap_content"  android:layout_wrap_content" />
    RelativeLayout>

    <RelativeLayout  android:id="@+id/rl_info"  android:orientation="vertical"  android:padding="@dimen/px_60"  android:layout_match_parent"  android:layout_@dimen/addr_height">
        <RelativeLayout  android:id="@+id/rl_addr_user"  android:layout_match_parent"  android:layout_wrap_content">
            <TextView  android:id="@+id/tv_userName"  color:#008000;">"@style/addr_item_style"  android:layout_wrap_content"  android:layout_wrap_content" />
            <TextView  android:id="@+id/tv_phone"  color:#008000;">"@style/addr_item_style"  android:layout_alignParentRight="true"  android:layout_wrap_content"  android:layout_wrap_content" />
        RelativeLayout>

        <TextView  android:id="@+id/tv_addr"  android:layout_below="@+id/rl_addr_user"  color:#008000;">"@style/addr_item_style"  android:layout_marginBottom="@dimen/px_60"  android:layout_marginTop="@dimen/px_30"  android:maxLines="2"  android:lines="2"  android:layout_match_parent"  android:layout_wrap_content" />
        <RelativeLayout  android:layout_alignParentBottom="true"  android:layout_match_parent"  android:layout_wrap_content">
            <ImageView  android:id="@+id/iv_setDefault"  android:src="@drawable/addr_default"  android:layout_@dimen/dp_20"  android:layout_@dimen/dp_20" />
            <TextView  android:id="@+id/tv_setDetault"  android:text="设为默认"  color:#008000;">"@style/addr_sub_item_style"  android:layout_marginLeft="@dimen/px_16"  android:layout_toRightOf="@+id/iv_setDefault"  android:layout_wrap_content"  android:layout_wrap_content" />
            <LinearLayout  android:layout_alignParentRight="true"  android:layout_wrap_content"  android:layout_wrap_content">
                <LinearLayout  android:id="@+id/ll_edit"  android:layout_marginRight="@dimen/px_50"  android:layout_wrap_content"  android:layout_wrap_content">
                    <ImageView  android:src="@drawable/edit_icon"  android:layout_marginRight="@dimen/px_8"  android:layout_@dimen/dp_20"  android:layout_@dimen/dp_20" />
                    <TextView  android:text="编辑"  color:#008000;">"@style/addr_sub_item_style"  android:layout_wrap_content"  android:layout_wrap_content" />
                LinearLayout>
                <LinearLayout  android:id="@+id/ll_delete"  android:focusable="false"  android:clickable="true"  android:layout_wrap_content"  android:layout_wrap_content">
                    <ImageView  android:src="@drawable/delete_icon"  android:layout_marginRight="@dimen/px_8"  android:layout_@dimen/dp_20"  android:layout_@dimen/dp_20" />
                    <TextView  android:text="删除"  color:#008000;">"@style/addr_sub_item_style"  android:layout_wrap_content"  android:layout_wrap_content" />
                LinearLayout>
            LinearLayout>
        RelativeLayout>
    RelativeLayout>


LinearLayout>

删除按钮的自定义Dialog:

xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical"  android:background="@color/color_trans"  android:layout_match_parent"  android:layout_match_parent">
    <LinearLayout  android:orientation="vertical"  android:background="@drawable/dialog_bg_style"  android:layout_@dimen/addr_dialog_width"  android:layout_wrap_content">
        <TextView  android:id="@+id/tv_title"  android:text="提示"  android:visibility="gone"  android:layout_match_parent"  android:layout_wrap_content" />
        <TextView  android:id="@+id/tv_msg"  android:gravity="center_horizontal"  android:textColor="@color/color_orange"  android:textSize="@dimen/px_28"  android:layout_marginTop="@dimen/px_70"  android:layout_marginBottom="@dimen/px_72"  android:layout_match_parent"  android:layout_wrap_content" />
        <LinearLayout  android:gravity="center_horizontal"  android:layout_marginBottom="@dimen/px_20"  android:layout_match_parent"  android:layout_wrap_content">

            <Button  android:id="@+id/iv_cancel"  android:text="取消"  android:textSize="@dimen/px_24"  android:textColor="@color/white"  android:background="@drawable/corner_orange_button"  android:layout_marginRight="@dimen/px_78"  android:layout_@dimen/px_142"  android:layout_@dimen/px_52" />
            <Button  android:id="@+id/iv_submit"  android:text="确认"  android:textSize="@dimen/px_24"  android:textColor="@color/white"  android:background="@drawable/corner_orange_button"  android:layout_@dimen/px_142"  android:layout_@dimen/px_52" />


        LinearLayout>
    LinearLayout>

RelativeLayout>


推荐阅读
  • 本文详细介绍了如何在Android应用中使用GridView组件以网格形式展示数据(如文本和图像)。通过行列布局,实现类似矩阵的数据展示效果。 ... [详细]
  • 本文将介绍网易NEC CSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 在网站制作中随时可用的10个 HTML5 代码片段
    HTML很容易写,但创建网页时,您经常需要重复做同样的任务,如创建表单。在这篇文章中,我收集了10个超有用的HTML代码片段,有HTML5启动模板、空白图片、打电话和发短信、自动完 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文介绍如何在Windows Forms应用程序中使用C#实现DataGridView的多列排序功能,包括升序和降序排序。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
author-avatar
min-章_998
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有