设为首页 加入收藏

TOP

Android中GridView通过自定义适配器(未优化)实现图文视图排列(一)
2016-12-28 08:16:05 】 浏览:433
Tags:Android GridView 通过 定义 适配器 优化 实现 图文 排列


Layout下gridview.xml布局文件:



android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp">


anroid:numColumns="3"GridView的列数设置为3


android:columnWidth="90dp",每列的宽度,也就是Item的宽度


android:stretMode="columnWidth" 缩放与列宽大小同步


android:verticalSpacing="10dp" 两行之间的边距


android:horizontalSpacing="10dp" 两列之间的边距


Layoutitem_layout.xml布局文件(即为网格内每个单元格的布局)



android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"(此处设置gravity为center后便不需要在他处重复设置)
android:orientation="vertical">
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher" />
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="功能" (测试使用此处文本框内的文本设置可不添加)/>


java代码实现功能(核心为自定义适配器):


public class GridViewDemo extends AppCompatActivity {
private GridView gv;//声明GridView视图
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridview);
gv = (GridView) findViewById(R.id.gv);
gv.setAdapter(new MyAdapter(this));//通过设置适配器实现网格内布局
//为每个单元格(item)添加单击事件
gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<> parent, View view, int position, long id) {
TextView tv = (TextView) view.findViewById(R.id.tv);
Toast t =Toast.makeText(GridViewDemo.this,tv.getText().toString(),Toast.LENGTH_SHORT);
t.setGravity(Gravity.TOP,0,0);
t.show();
}
});
}
//自定义适配器(通过继承BaseAdapter)
class MyAdapter extends BaseAdapter {
Context context;//声明适配器中引用的上下文
//将需要引用的图片和文字分别封装成数组
int[] images = {R.mipmap.ic_launcher, R.mipmap.
ic_launcher, R.mipmap.ic_launcher, R.mipmap.
ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher,};
String[] names = {"功能1", "功能2", "功能3", "功能4", "功能5", "功能6"};
//通过构造方法初始化上下文
public MyAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return names.length;//images也可以
}
@Override
public Object getItem(int position) {
return names[position];//images也可以
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//通过布局填充器LayoutInflater填充网格单元格内的布局
View v = LayoutInflater.from(context).inflate(R.layout.item_layout, null);
//使用findViewById分别找到单元格内布局的图片以及文字
ImageView iv = (ImageView) v.findViewById(R.id.iv);
TextView tv = (TextView) v.findViewById(R.id.tv);
//引用数组内元素设置布局内图片以及文字的内容
iv.setImageResource(images[position]);
tv.setText(names[position]);
//

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android中的AlertDialog使用示例.. 下一篇Java动态代理模式(从现实生活角..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目