Android教程之Android 用户界面-表格视图(GridView)

简介: Android教程之Android 用户界面-表格视图(GridView)

1、简介

GridView 以行列的方式来布局View,是一种常用的布局视图组件。

2、实现步骤

2.1 常见GridView布局文件

2.2 实例化

2.3 绑定数据

2.4 响应事件

3、代码演示

3.1 基本GridView

布局文件

<?xml version=”1.0″ encoding=”utf-8″?>
<GridView xmlns:android=”https://schemas.android.com/apk/res/android”
android:id=”@+id/gridview”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:columnWidth=”90dp”
android:numColumns=”auto_fit”
android:verticalSpacing=”10dp”
android:horizontalSpacing=”10dp”
android:stretchMode=”columnWidth”
android:gravity=”center”
/>

程序代码

package com.amaker.gv;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private GridView gv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gv = (GridView) findViewById(R.id.gridview);
// 绑定数据 ListView Spinner AutoCompleteTextView GridView
gv.setAdapter(new ImageAdapter());
gv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this, position+”–”, Toast.LENGTH_LONG).show();
}
});
}
class ImageAdapter extends BaseAdapter{
int[] images = {
R.drawable.sample_0,
R.drawable.sample_1,
R.drawable.sample_2,
R.drawable.sample_3,
R.drawable.sample_4,
R.drawable.sample_5,
R.drawable.sample_6,
R.drawable.sample_7,
};
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(MainActivity.this);
iv.setImageResource(images[position]);
iv.setLayoutParams(new GridView.LayoutParams(85, 85));
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
iv.setPadding(8, 8, 8, 8);
/* iv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, position+”", Toast.LENGTH_LONG).show();
}
});*/
return iv;
}
}
}

3.2 自定义GridView

布局文件

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”https://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
>
<ImageView
android:id=”@+id/ImageView01″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”/>
<TextView
android:text=”"
android:id=”@+id/TextView01″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”/>
</LinearLayout>

程序代码

package com.amaker.gv;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity2 extends Activity {
private GridView gv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gv = (GridView) findViewById(R.id.gridview);
// 绑定数据 ListView Spinner AutoCompleteTextView GridView
gv.setAdapter(new ImageAdapter());
gv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity2.this, position+”–”, Toast.LENGTH_LONG).show();
}
});
}
class ImageAdapter extends BaseAdapter{
LayoutInflater inflater;
public ImageAdapter() {
inflater = LayoutInflater.from(MainActivity2.this);
}
int[] images = {
R.drawable.icon,
R.drawable.icon,
R.drawable.icon,
R.drawable.icon,
R.drawable.icon,
R.drawable.icon,
};
String[] strs = {
“Hello”,
“Grid Demo”,
“Hello”,
“Grid Demo”,
“Hello”,
“Grid Demo”,
};
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = inflater.inflate(R.layout.gridview_item, null);
ImageView iv = (ImageView) v.findViewById(R.id.ImageView01);
TextView tv = (TextView)v.findViewById(R.id.TextView01);
iv.setImageResource(images[position]);
tv.setText(strs[position]);
return v;
}
}
}
相关文章
|
3月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
2023 2
|
2天前
|
测试技术 Android开发 Python
探索软件测试的艺术:从基础到高级安卓应用开发中的自定义视图
【8月更文挑战第29天】在软件开发的世界中,测试是不可或缺的一环。它如同艺术一般,需要精细的技巧和深厚的知识。本文旨在通过浅显易懂的语言,引领读者从软件测试的基础出发,逐步深入到更复杂的测试策略和工具的使用,最终达到能够独立进行高效测试的水平。我们将一起探索如何通过不同的测试方法来确保软件的质量和性能,就像艺术家通过不同的色彩和笔触来完成一幅画作一样。
|
1天前
|
供应链 物联网 区块链
未来触手可及:探索新兴技术的趋势与应用安卓开发中的自定义视图:从基础到进阶
【8月更文挑战第30天】随着科技的飞速发展,新兴技术如区块链、物联网和虚拟现实正在重塑我们的世界。本文将深入探讨这些技术的发展趋势和应用场景,带你领略未来的可能性。
|
2月前
|
搜索推荐 Android开发 UED
探索安卓开发中的自定义视图:打造个性化用户界面
【7月更文挑战第31天】在安卓应用的海洋中,一个独特且吸引人的用户界面是捕获用户眼球的关键。本文将带你深入理解如何在Android开发中创建自定义视图,从而设计出与众不同的用户界面。我们将一起探索如何从零开始构建一个自定义视图组件,并实现动态交互效果。通过实际的代码示例和详细的步骤解析,你将学会如何提升你的应用界面,让它在众多应用中脱颖而出。
83 31
|
5天前
|
前端开发 Android开发 开发者
安卓开发中的自定义视图:构建你的第一个控件
【8月更文挑战第26天】在安卓开发的浩瀚海洋中,自定义视图是一块充满魔力的乐土。它不仅是开发者展示创造力的舞台,更是实现独特用户体验的关键。本文将带你步入自定义视图的世界,从基础概念到实战应用,一步步教你如何打造自己的第一个控件。无论你是初学者还是有经验的开发者,这篇文章都将为你的开发之旅增添新的风景。
|
3月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
40 2
|
3月前
|
存储 缓存 Android开发
安卓应用开发:打造高效用户界面的五大技巧
【5月更文挑战第59天】 在移动应用的世界里,一个流畅且直观的用户界面(UI)是成功的关键。本文深入探讨了五个关键的UI设计技巧,这些技巧可以帮助安卓开发者优化其应用的性能和用户体验。通过减少不必要的绘制操作、使用高效的布局设计、合理管理内存资源、采用合适的数据存储方案以及充分利用硬件加速功能,开发者能够显著提升应用的响应速度和稳定性。这些技巧不仅适用于新手开发者,对于有经验的开发者来说,也是值得复习和实践的重要知识点。
|
3月前
|
Android开发
杨老师课堂_安卓教程第一篇之入门
杨老师课堂_安卓教程第一篇之入门
27 0
|
3月前
|
机器学习/深度学习 搜索推荐 Android开发
在安卓应用开发中,构建高效的用户界面是至关重要的一环
【6月更文挑战第10天】本文是关于构建高效安卓用户界面的指南,分为设计原则和技巧两部分。设计原则包括一致性、简洁性和可访问性,强调遵循安卓系统规范、保持界面简洁及考虑不同用户需求。技巧方面,建议合理布局、优化图标和图片、使用动画效果、提供个性化设置以及优化性能。随着技术发展,开发者需关注AI和机器学习,以创新应用体验,适应用户需求变化。
42 0
|
XML Android开发 数据格式
Android官方开发文档Training系列课程中文版:构建第一款安卓应用之创建用户界面
原文地址:http://android.xsoftlab.net/training/basics/firstapp/building-ui.html 在这节课中,你会创建一个xml的布局文件,它包含一个Text成员和一个Button成员。
918 0