GridView & 自定义适配器
来源:互联网 发布:mysql并发insert死锁 编辑:程序博客网 时间:2024/05/29 17:40
2017/1/5 星期四 17:23:26
[toc]
GridView & 自定义适配器
作用:用于展示图片,可以用作图库。
效果:可以滑动,类似ScrollView
有点击事件
需要适配器
常见属性
√ android:numColumns="auto_fit" 列数设为自动 √ android:columnWidth="90dp" 列宽√ android:stretchMode="columnWidth" 缩放模式与列宽大小同步 √ android:verticalSpacing="10dp" 行距 √ android:horizontalSpacing=”10dp” 列距 android:cacheColorHint="#00000000" 去除拖动时默认的黑色背景 android:listSelector="#00000000" 去除选中时的黄色底色 android:scrollbars="none" 隐藏GridView的滚动条 android:fadeScrollbars="true" 设置为true就可以实现滚动条的自动隐藏和显示 android:fastScrollEnabled="true" GridView出现快速滚动的按钮(至少滚动4页才会显示) android:fadingEdge="none" GridView衰落(褪去)边缘颜色为空,缺省值是vertical。(可以理解为上下边缘的提示色) android:fadingEdgeLength="10dip" 定义的衰落(褪去)边缘的长度 android:stackFromBottom="true" 设置为true时,你做好的列表就会显示你列表的最下面 android:transcriptMode="alwaysScroll" 当你动态添加数据时,列表将自动往下滚动最新的条目可以自动滚动到可视范围内 android:drawSelectorOnTop="false" 点击某条记录不放,颜色会在记录的后面成为背景色,内容的文字可见(缺省为false)
自定义适配器
1. 创建MyAdapter继承于BaseAdapter
2. 实现4个方法
getCount()
获取要显示的选项总数,一般为数组的长度getItem(int position)
每一个选项,为数组的元素getItemId(int position)
数组的ID,即positiongetView(int position, View convertView, ViewGroup parent)
//主要在该方法中操作。
getView()
(1)在GridView中只展示图片
在此创建ImageView,ImageView imageView = new ImageView(context);
将图片设置到ImageView中,返回的是ImageView对象(此处
需要上下文,但是不能用this,用以下方式构建context
private Context context;public MyAdapter(Context context) { this.context = context;}
)
(2)在GridView中展示图文(即自定义项目视图)
a. 创建自定义视图的item.xml
b. 在getView方法中,
//将item.xml加载LayoutInflater inflater = LayoutInflater.from(context);View view = inflater.inflate(R.layout.item, null);//找到item.xml中的组件ImageView imageView = (ImageView) view.findViewById(R.id.iv);TextView textView = (TextView) view.findViewById(R.id.tv);//给找到的组件设置内容imageView.setImageResource(images[position]);textView.setText(imageNames[position]);
示例代码
MainActivity2.java
public class MainActivity2 extends AppCompatActivity { GridView gridView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); gridView = (GridView) findViewById(R.id.gv2); gridView.setAdapter(new MyAdapter(this));// gridView.setOnItemClickListener(); //设置点击事件// gridView.setOnItemLongClickListener(); //设置长按点击事件 } //设置适配器 //static静态类相当于外部类,优先选择使用静态内部类 static class MyAdapter extends BaseAdapter { private Context context; public MyAdapter(Context context) { this.context = context; } //当需要上下文而不能用this指定的时候,用该步骤构建context int[] images = {R.mipmap.a, R.mipmap.b, R.mipmap.c, R.mipmap.d, R.mipmap.e, R.mipmap.z1, R.mipmap.z2, R.mipmap.butterfly, R.mipmap.file}; String[] imageNames = {"a", "b", "c", "d", "e", "z1", "z2", "butterfly", "file"}; @Override public int getCount() { //数组元素数目,即数组长度 return imageNames.length;//images.length都行,都是9 } @Override public Object getItem(int position) { //数组元素 return images[position]; //用imageNames[position]也可 } @Override public long getItemId(int position) { return position; //此处不变 } @Override public View getView(int position, View convertView, ViewGroup parent) { //此处需要创建一个布局文件 //将item.xml加载 LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.item, null); //找到item.xml中的组件 ImageView imageView = (ImageView) view.findViewById(R.id.iv); TextView textView = (TextView) view.findViewById(R.id.tv); //给找到的组件设置内容 imageView.setImageResource(images[position]); textView.setText(imageNames[position]); return view; } }}
activity_main2.xml
一般只需要一个GridView,这是一个容器控件
<?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:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.riqthen.glidview.MainActivity"> <GridView android:id="@+id/gv2" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="100dp" android:padding="10dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="auto_fit" android:stretchMode="columnWidth" android:verticalSpacing="10dp" /></RelativeLayout>
item.xml
每个项目的视图,不需要对应的java文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <ImageView android:id="@+id/iv" android:layout_width="80dp" android:layout_height="80dp" android:src="@mipmap/ic_launcher" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="图片" /></LinearLayout>
0 0
- GridView & 自定义适配器
- 安卓GridView(自定义适配器)
- gridview适配器
- GridView适配器
- 安卓:自定义适配器实现GridView图文混排
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 自定义适配器
- 关于关联 组合 聚合 依赖关系
- 【leetcode】110. Balanced Binary Tree【java】
- Android实现指定区域截屏的实现
- 欢迎使用CSDN-markdown编辑器
- python学习记录
- GridView & 自定义适配器
- oracle环境配置以及sys权限受限问题
- JAVA8学习笔记-function
- centos6.x安装mycat(简单的安装)
- LA 7456 Least Crucial Node
- 19-小学生考试系统
- Spring通过factory配置bean
- 使用js替换符号
- Android之lrucache原理以及获取系统应用和启动系统应用