GridView布局及适配器优化
1.布局样式
<GridView
android:id="@+id/gridView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#DCDCDC"
android:gravity="center"
android:horizontalSpacing="1dp"
android:listSelector="@null"
android:numColumns="3"
android:stretchMode="columnWidth"
android:verticalSpacing="1dp" />
2.适配器对象
import android.view.View; /**
* Author:JsonLu
* DateTime:2016/6/3 14:47
* Email:jsonlu@qq.com
* Desc:
**/
public class GridViewItem {
private int resId;
private String name;
private View.OnClickListener clickListener; public int getResId() {
return resId;
} public void setResId(int resId) {
this.resId = resId;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public View.OnClickListener getClickListener() {
return clickListener;
} public void setClickListener(View.OnClickListener clickListener) {
this.clickListener = clickListener;
}
}
3.填充子节点布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="1dp"
android:background="@android:color/white"
android:gravity="center"
android:orientation="vertical"> <ImageView
android:id="@+id/grid_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <TextView
android:id="@+id/grid_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
4.适配器
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 java.util.List; /**
* Author:JsonLu
* DateTime:2016/6/3 14:33
* Email:jsonlu@qq.com
* Desc:
**/
public abstract class GridAdapter extends BaseAdapter { public abstract List<GridViewItem> getData();
private List<GridViewItem> list;
private GridViewItem item;
private LayoutInflater layoutInflater; public GridAdapter(Context context) {
list = getData();
layoutInflater = LayoutInflater.from(context);
} @Override
public int getCount() {
return list.size();
} @Override
public Object getItem(int position) {
return list.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (layoutInflater != null) {
view = layoutInflater.inflate(R.layout.girdview_item, null);
ImageView imageView = (ImageView) view.findViewById(R.id.grid_icon);
TextView textView = (TextView) view.findViewById(R.id.grid_name);
item = list.get(position);
imageView.setImageDrawable(view.getContext().getResources().getDrawable(item.getResId()));
textView.setText(item.getName());
view.setOnClickListener(item.getClickListener()); }
return view;
}
}
5.使用
GridView gridView = (GridView) findViewById(R.id.gridView);
gridView.setAdapter(new GridAdapter(this) {
@Override
public List<GridViewItem> getData() {
List<GridViewItem> list = new ArrayList<GridViewItem>();
for (int i = 0; i < 9; i++) {
GridViewItem item = new GridViewItem();
final int index = i;
item.setName("Title"+i);
item.setResId(R.drawable.ic_launcher);
item.setClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(), "点击"+index, Toast.LENGTH_SHORT).show();
}
});
list.add(item);
}
return list;
}
});
GridView布局及适配器优化的更多相关文章
- GridView布局,自定义适配器,水平滚动
添加GridItem布局XML文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...
- Java-android使用GridView布局的电子相册&服务器获取图片
转 http://www.tuicool.com/articles/B7JNv2 电子相册的思路: 1.先是考虑布局,我用的是GridView布局 2.GridView中又该怎么显示图片,其实我的这 ...
- 6款强大的 jQuery 网页布局创建及优化插件
本文将为您介绍6款功能强大的jQuery插件,它们能够帮助您方便快捷地创建复杂的网络布局并进行优化. 1.UI.Layout 该插件可以创建任何你想要的UI形式:包括从简单的标题或侧边栏,到一个包含工 ...
- Android中GridView通过自定义适配器(未优化)实现图文视图排列
Android中GridView组件用来以网格方式排列视图,与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要显示时,可以使用该组件.下面我们通过代码实现如下图例(为了方便截图,将事件处理(土 ...
- 线性布局通过适配器可以动态加载view
因为适配器的getView的返回对象是view, 所以线性布局的对象可以通过addView动态加载适配器的getView 举例: mTestAdapter = new ListAdapter(this ...
- Gridview布局界面练习Simple Adapter
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZcAAAJcCAIAAAC6w36wAAAgAElEQVR4nOy953YbS5KuvVsiTFWlz6
- 使用Html5+C#+微信 开发移动端游戏详细教程:(六)游戏界面布局与性能优化
本篇教程我们主要讲解在游戏界面上的布局一般遵循哪些原则和一些性能优化的通用方法. 接着教程(五),我们通过Loading类一次性加载了全部图像素材,现在要把我们所用到的素材变成图片对象显示在界面上,由 ...
- gridView 布局间距合理化的有效办法
网上有很多人闻到过这个问题,给出好多办法,多数人并不是意见提的不对,而是没有抓住问题的本质 . 因为我要做一个girdView的demo实例,遇到了这个问题 与大家一起分享,如果有想要demo的请给我 ...
- android gridview布局,实现长按某一个,所有项都显示删除的图标
最近一直忙着项目开发,有段时间没有写博文了,今天想跟大家分享的是长按gridview中的某一项显示删除图标,此时点击某项便可删除,再长按取消删除图标. gridview的布局文件如下: <?xm ...
随机推荐
- bzoj3583: 杰杰的女性朋友 && 4362: Graph
Description 给出一张n个点的有向图G(V,E).对于任意两个点u,v(u可以等于v),u向v的连边数为: ∑OUT(u,i) * IN(v,i),其中1<=i<=K 其中k和数 ...
- LeapMotion预览——什么是LeapMotion
LeapMotion预览 这个就是LeapMotion: 原文转自: LeapMotion预览 LeapMotion 官网:http://leapmotion.com/ 开发者:https://d ...
- Unity各平台路径总结
路径是Unity开发中令人头疼的一个问题,根据我的开发经验,现将开发中遇到的路径问题总结如下: 1. 如何读取Application.streamingAssetsPath下的文件? Edit.iOS ...
- ExtJS简单的动画效果(ext js淡入淡出特效)
1.html页面:Application HTML file - index.html <html> <head> <title>ExtJs fadeIn() an ...
- 【Java】ArrayList和LinkedList的区别
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问 ...
- build Intent
Intent用于activity之间, fragmetn之间, 或者APP间通信, 主要包含数据和Action两部分: 常见的action是字符串形式的activity指定 Intent intent ...
- C++ Primer 随笔 Chapter 13 复制控制
1.复制控制包含的内容:复制构造函数.赋值操作符.析构函数 2.复制构造函数: a. 定义:只有单个形参,而且该形参是对本类类型的引用,这样的构造函数被成为复制构造函数 b. 适用情况: (1)根据一 ...
- 综合查询员工和datetime.now和datetime.today区别
一:综合查询图 二:EmployeeListWindow.cs代码 using System; using System.Collections.Generic; using System.Compo ...
- 关于Linux
这是一个2B让我写的关于Linux的一点东西. 其实我对Linux一直都是持有一种很尊敬的态度,作为一个非商业性的操作系统,能够成长成这样简直是不可思议,有一种Dota在游戏界的感觉,很让人佩服.但是 ...
- Windows Shell Extension 系列文章
Windows Shell Extension 系列文章 http://www.codeproject.com/Articles/512956/NET-Shell-Extensions-Shell-C ...