GridView实现桌面图标显示案例

GridView实现桌面图标显示案例,供大家参考,具体内容如下

用法与ListView类似,需要以下几步:

1、定义实体类
2、自定义适配器继承BaseAdapter
3、定义GridView内部布局

效果图:

代码:

实体类:Icon.java

package com.example.a16gridviewtest.entity;

public class Icon {
    private int iconId;
    private String name;

    public Icon(int iconId, String name) {
        this.iconId = iconId;
        this.name = name;
    }

    public int getIconId() {
        return iconId;
    }

    public void setIconId(int iconId) {
        this.iconId = iconId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

自定义适配器:GridViewAdapter.java

package com.example.a16gridviewtest.adpater;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.a16gridviewtest.R;
import com.example.a16gridviewtest.entity.Icon;

import java.util.List;

public class GridViewAdapter extends BaseAdapter {

    private List<Icon> mData;
    private Context mContext;

    public GridViewAdapter(List<Icon> data, Context context) {
        this.mData = data;
        this.mContext = context;
    }

    @Override
    public int getCount() {
        return mData != null ? mData.size() : 0;
    }

    @Override
    public Object getItem(int position) {
        return mData.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_grid_icon, parent, false);
            holder.img_icon = convertView.findViewById(R.id.img_icon);
            holder.name = convertView.findViewById(R.id.txt_icon);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.img_icon.setImageResource(mData.get(position).getIconId());
        holder.name.setText(mData.get(position).getName());
        return convertView;
    }

    class ViewHolder {
        private ImageView img_icon;
        private TextView name;
    }
}

MainAcitivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridview_layout);
        //视图层View
        GridView gridView = findViewById(R.id.gridView);
        //数据源Model
        ArrayList<Icon> list = new ArrayList<>();
        list.add(new Icon(R.mipmap.icon1,"QQ"));
        list.add(new Icon(R.mipmap.icon2,"微信"));
        list.add(new Icon(R.mipmap.icon3,"电话"));
        list.add(new Icon(R.mipmap.icon4,"照片"));
        list.add(new Icon(R.mipmap.icon5,"音乐"));
        list.add(new Icon(R.mipmap.icon6,"Chrome"));
        list.add(new Icon(R.mipmap.icon7,"百度"));
        //控制层Controller
        GridViewAdapter adapter = new GridViewAdapter(list,this);
        gridView.setAdapter(adapter);
        //绑定点击事件
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(getApplicationContext(), "你点击了第" + (position+1) + "项", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

主布局文件:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:horizontalSpacing="10dp"
    android:verticalSpacing="10dp"
    android:numColumns="3" >

</GridView>

单个GridView布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp">

    <ImageView
        android:id="@+id/img_icon"
        android:layout_width="64dp"
        android:layout_height="64dp"
        android:layout_centerInParent="true"
        android:src="@mipmap/icon1" />

    <TextView
        android:id="@+id/txt_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/img_icon"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:text="QQ"
        android:textSize="18sp" />
    
</RelativeLayout>
id/img_icon"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:text="QQ"
        android:textSize="18sp" />
    
</RelativeLayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • DataGridView自定义单元格表示值、Error图标显示的方法介绍

    自定义单元格表示值 通过CellFormatting事件,可以自定义单元格的表示值.(比如:值为Error的时候,单元格被设定为红色) 示例: private void dgv_Users_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { try { if (e == null || e.Value == null || !(sender is DataGridView)) return; DataGri

  • ASP.Net2.0 GridView 多列排序,显示排序图标,分页

    最近在使用ASP.net 2.0的GridView 控件时,发现排序与分页功能Microsoft实现的都很简单,比如排序,在点击列名的时候来触发整页的PostBack,然后排序,但是在列头上没有一个显示升序降序的图标,这会让最终用户使用时很迷惑,因为不知道是升序了还是降序了,所以今天首先解决的第一问题就是升序降序在列上显示图标,第二要解决的问题是默认GridView按列排序只能排一列的,也就是不能进行多列排序,而在实际应用中仅仅按照一列来排序是不能满足业务需求的,第三是GridView 分页问题

  • DataGridView带图标的单元格实现代码

    目的: 扩展 C# WinForm 自带的表格控件,使其可以自动判断数据的上下界限值,并标识溢出. 这里使用的方法是:扩展 表格的列 对象:DataGridViewColumn. 1.创建类:DecimalCheckCell /// <summary> /// 可进行范围检查的 数值单元格 /// </summary> public class DecimalCheckCell : DataGridViewTextBoxCell { private bool checkMaxVal

  • GridView实现桌面图标显示案例

    GridView实现桌面图标显示案例,供大家参考,具体内容如下 用法与ListView类似,需要以下几步: 1.定义实体类2.自定义适配器继承BaseAdapter3.定义GridView内部布局 效果图: 代码: 实体类:Icon.java package com.example.a16gridviewtest.entity; public class Icon {     private int iconId;     private String name;     public Icon

  • Android 桌面图标右上角显示未读消息数字

    背景: 在Android原生系统中,众所周知不支持桌面图标显示未读消息提醒的数字,虽然第三方控件BadgeView可以实现应用内的数字提醒.但对于系统的图标,特别是app的logo图标很难实现数字标志,即使是绘图的方式不断修改,但这种方式天生弊端,实用性很差.但幸运的是,一些强大的手机厂商(小米,三星,索尼)提供了私有的API,但也带来了难度,API的不同就意味着代码量的增加和兼容性问题更加突出. 现在我们来看看他们是如何实现的: 实现原理: 首先我们要明白 并不是应用本身处理对启动图标进行修改

  • 显示桌面图标丢了怎么恢复?

    我的快速启动栏的显示桌面的图标没有了,我不小心删掉了,想弄回来,该怎么办,我用的win2000,请帮忙,谢谢 答:其实"快速启动"就是一个目录,您可以找到它,然后在其中添加自己想要的快捷方式.比如:您的系统安装在C盘,使用"into"作为用户名登录的."快速启动"是C:Documents and SettingsintoApplication DataMicrosoftInternet ExplorerQuick Launch文件夹,我想下面的操

  • 快速启动桌面图标丢失的解决方法

    无意中发现XP系统的快速启动栏里的"显示桌面"图标不见了,平时桌面上一大堆东西,想返回的时候都是点击一下这个"显示桌面"的图标就好了,现在没了它还真不方便.flymorn总结一下恢复这个图标的方法吧. 第一个方法: 点击"开始→运行",在弹出的"运行"对话框中输入"REGSVR32 /n /i:u shell32"(不含双引号),然后回车,片刻后会弹出"shell32中的DllInstall成功&

  • 桌面没有我的电脑了,桌面无法显示我的电脑的解决方法

    注册表法:"开始→运行",键入"Regedit"后回车,然后在注册表编辑器中依次展开[HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Explore]分支,删除右侧窗口中的"StuckRects"主键,然后重新启动计算机. 桌面图标无法显示,且鼠标右键点击桌面无反应!! 安全模式下可以进入系统表明系统没有遭遇毁灭性打击,这样都是有救的 首先打开注册表:运行:regedit

  • Android如何动态改变App桌面图标

    时不时的我们就会发现,一些我们常见的应用,比如某宝,某东,在一些特殊的日子中,比如双十一,元旦,为了迎合这样一个日子的气氛,在桌面的应用图标就会发生改变,其实对于这样的一个桌面图标更换,Android中为我们提供了AndroidManifest.xml里的<activity-alias>标签实现方式(更多文章请关注我的微信公众账号,左边二维码). 我们知道,我们每写一个 Activity就要在AndroidManifest进行配置一下,我们才可以正常的启动它,除此之外,我们还可以对它设置一个别

  • Android实现系统的桌面图标文字的双行显示效果

    一.应用名称长短不一,一行可能显示不全需要多行显示.由于Launcher空间有限,特别是横屏的时候,图标预留的空间很小,所以一般不建议多行显示.如果一定要多行显示,我们建议竖屏下最多显示两行,横屏下保持单行显示 二.配置属性(我的是没配置属性的) 1.竖屏 在路径:packages\apps\Launcher3\res\values\config.xml 添加或者修改为: false 2 竖屏下关闭单行显示.设置最大显示行数为2行 2.横屏 在路径:packages\apps\Launcher3

  • GridView中日期不显示时分秒的完美解决方法

    两种处理方式: 1.模版列:假设数据表的字段completeTime的类型为时间格式 <asp:TemplateField HeaderText="时间"> <ItemTemplate> <%#Eval("completeTime", "{0:yyyy-MM-dd}")%> </ItemTemplate> </asp:TemplateField> 2.绑定列: <asp:Bound

  • iOS 底部按钮和应用图标显示未读消息(带数字)

    我们要实现的效果如下: 我们使用系统自带的,实际上,代码量很少,在我们要显示的按钮上,打上下面一句代码即可: self.tabBarItem.badgeValue = @"1"; 同时设置图标和按钮的代码: /** * 获得未读数 */ - (void)setupUnreadCount { //获取未读数具体方法 //最终返回一个数字,如: int count=10; // 设置提醒数字(微博的未读数) NSString *status = [NSString stringWithFo

  • Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题的解决方法

    if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){ finish(); return; } 应用程序入口Activity的onCreate方法中加入上面的判断,完美解决应用程序多次重启问题. 应用程序入口Activity的onCreate方法中加入上面的判断,在setcontentview方法之前调用. 以上所述是小编给大家介绍的 Android应用第一次安装成功点击"打开"后Ho

随机推荐