本次的Demo是通过GridView展示一个List,通过2个按钮实现GridView从视觉上的增加和减少。
为了方便增加和减少,本次用的储存结构是List。与String在BaseAdapter一样,只需要更改BaseAdapter的2个基本函数分别是getItem(),getCount()
public Object getItem(int position) { return mad[position]; } public int getCount() { return mad.length; }
这是String的 BaseAdapter
@Override public Object getItem(int position) { // TODO Auto-generated method stub return mList.get(position); } @Override public int getCount() { // TODO Auto-generated method stub return mList.size(); }
这是List的BaseAdapter
下边放上整个代码
package com.example.onclickgridview; import java.security.acl.LastOwnerException; import java.util.ArrayList; import java.util.List; import android.R.integer; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.GridView; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { // 作用: // 1、对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入. // // 2、对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findViewById方法来获得其中的界面元素. private LayoutInflater mInflater; //创建初始化数据源 private String[] mad = {"1","2","3","4","5","6","7","8","9"}; private List<String> mList; //声明控件 private GridView mGridView; //声明adpter private Adapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //关联 Button btnAdd = (Button) findViewById(R.id.button1); Button btnDel = (Button) findViewById(R.id.button2); mGridView = (GridView) findViewById(R.id.gridView1); mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); mList = new ArrayList<String>(); for(int i = 0; i<mad.length; i++){ mList.add(mad[i]); } //新建BaseAdapter mAdapter = new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { TextView text; ImageView imgview; RelativeLayout rLayout; //初始化时加载页面用到的 if里的东西 if (convertView == null) { rLayout = (RelativeLayout) mInflater.inflate(R.layout.new_file, parent, false); } else { rLayout = (RelativeLayout) convertView; } String item = (String) getItem(position); //设置控件取回的数据 text = (TextView) rLayout.findViewById(R.id.TextView2); text.setText(item); imgview = (ImageView) rLayout.findViewById(R.id.ImageView1); imgview.setImageResource(R.drawable.ic_launcher); return rLayout; } //本次重点 准确返回数据位置的关键 必须在getItemID设置对的位置选项默认从0开始 @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return mList.get(position); } @Override public int getCount() { // TODO Auto-generated method stub return mList.size(); } }; mGridView.setAdapter((ListAdapter) mAdapter); //监听事件 对于按下gridView控件的其中一个做出的响应 mGridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position,long id) { Toast.makeText(MainActivity.this, "你选择了" + (position + 1) + " 号图片", Toast.LENGTH_SHORT).show(); } }); //监听2个按钮 btnAdd.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { //通过对list的长度在选择累计增加的数值 int j= mList.size(); //这里用到了类型转换 String s = Integer.toString(j+1); mList.add(s); mGridView.setAdapter((ListAdapter) mAdapter); } }); btnDel.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { //通过对list的长度在选择累计减少的数值 int z= mList.size(); //这里用到了类型转换 String t = Integer.toString(z); mList.remove(t); mGridView.setAdapter((ListAdapter) mAdapter); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
展示效果
按下Add一次
多次按下Add
多次按下Delete
相关推荐
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。当我们处理大量数据时,分页加载可以提高应用性能,减少内存消耗,并提供更好的用户体验。本篇文章将详细讲解如何在Android中利用...
在Android开发中,GridView是一种非常常见的布局控件,它允许我们以网格的形式展示数据,通常用于创建类似照片墙、菜单选项或图标排列等界面。在本教程中,我们将深入探讨如何实现一个基本的GridView视图,并通过...
android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo 免费下载 给个好评!
在Android开发中,GridView是一种非常常见的布局控件,它允许我们以网格的形式展示数据,通常用于创建类似相册、应用列表等场景。本教程将详细讲解如何实现GridView的分页和滑动效果。 首先,我们需要了解GridView...
在Android开发中,GridView是一个非常常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建类似照片墙、应用列表等界面。本教程将详细讲解Android中的GridView及其使用方法。 1. GridView简介: ...
文章是参考博客http://blog.csdn.net/eastmount/article/details/41808179完成,主要讲述通过GridView控件点击加号图片动态添加本地相册图片,点击图片可以删除已添加图片。同时界面比较美观。 免费资源,希望对大家...
在Android开发中,GridView是一种常见的布局管理器,它允许我们以网格形式展示数据。然而,标准的GridView默认是垂直滚动的,对于某些设计需求,如创建一个横向滚动的网格视图,就需要对GridView进行定制。这个主题...
在Android开发中,GridView是一种非常常见的布局控件,它允许我们以网格的形式展示数据,通常用于创建类似照片墙、应用快捷方式或者菜单等界面。在本篇内容中,我们将深入探讨如何在Android应用中有效地使用GridView...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。这个项目的重点在于两个功能:一是实现在GridView中点击右上角的叉号删除条目,二是利用贝塞尔曲线来创建动态的进度条效果。 ...
实现GridView的横向滑动,默认为纵向滑动,主要目标实现GridView中两个或多个相邻item的合并效果,满足项目的UI设计,同时解决了item选中放大被其他item遮挡的问题;用法简单,一目了然,可供参考
在Android开发中,自定义GridView以实现长按拖动排序是一项常见的需求,特别是在构建具有可交互界面的应用中。本文将详细讲解如何实现这样一个功能,同时包括震动提示、固定"更多"项以及保存排序状态到数据库。 ...
在Android开发中,GridView和ListView是两种常用的布局控件,它们用于展示大量数据,并且可以进行滚动操作。这两个控件都是AdapterView的子类,因此它们的数据管理方式都是通过Adapter来实现的。在这个项目中,我们...
在Android开发中,GridView是一种非常常见的布局控件,它能够以网格的形式展示数据,通常用于创建类似相册、菜单或图标列表等界面。本篇博客源码深入探讨了如何在Android应用中有效地使用GridView,包括如何显示Grid...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。通常,GridView默认是垂直滚动的,但有时我们可能需要实现横向滑动的GridView,以适应不同的界面设计需求。本篇文章将详细讲解...
在Android开发中,异步加载网络图片是一项常见的需求,特别是在数据密集型的界面如GridView中。这个Demo展示了如何实现这一功能,同时支持用户点击图片查看大图。以下将详细讲解这个Demo涉及的关键知识点。 首先,...
在Android开发中,GridView是一个非常常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建类似照片墙、应用快捷方式或者菜单等界面。在这个"Android GridView使用例子"中,我们将深入探讨如何有效地利用...
在Android开发中,GridView是一种常见的布局管理器,用于展示数据集,通常用于创建类似网格的视图,如图片、联系人列表等。本示例"android的GridView底部加载更多例子"探讨了如何在GridView中实现无限滚动加载功能,...
在Android开发中,GridView是一种非常常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建图片库、菜单选项或者任何需要多行多列显示的界面。在本实例中,我们将深入探讨如何使用GridView来构建一个基本...
在Android开发中,GridView是一个非常常用的布局组件,它允许我们以网格的形式展示数据,通常用于创建类似九宫格的效果。GridView通常与Adapter一起工作,Adapter是连接数据源和视图的关键,它可以动态地填充和更新...
在Android开发中,GridView是一种常用的布局控件,它允许数据以网格的形式展示,通常用于创建类似照片库或应用列表的界面。"android gridview多选删除"是一个专题,主要涉及如何实现GridView中的多选功能,并支持...