2-9 GridView 网格视图

14 篇文章 0 订阅
11 篇文章 0 订阅
常用属性
Adapter 接口
Demo 演示

首先新建一个包 gridview:
java/com.skypan.helloword -> New -> Package gridview
然后创建 GridViewActivity 文件:
gridview -> New -> Java Class
其中须填写的内容信息如下:
Name: GridViewActivity
Kind: Class
SuperClass: android.support.v7.app.AppCompatActivity
Interface(s):
Package:com.skypan.helloworld.gridview
Visiblity: √ Public Package Private
Modifiers: √ None Abstract Final

GridViewActivity.java

package com.skypan.helloworld.gridview
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

/**
* Created by skypan on 2019/12/29
*/
public class GridViewActivity extends AppCompatActivity {
	
	//声明控件
	private GridView mGv;
	
	@Override
	protected void onCreate(@Nullable Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_gridview);	//R.layout 选第二个R.layout(com.skypan.helloworld.R)

		//找到控件
		mGv = (GridView)findViewById(R.id.gv);

		//设置事件
		mGv.setAdapter(new MyGridViewAdapter(GridViewActivity.this));
		//点击事件
		mGv.setOnItemClickListener(new AdaptView.OnItemClickListener(){
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id){
				Toast.makeText(GridViewActivity.this,"点击 pos:" + position, Toast.LENGTH_SHORT).show();
			}
		});
		//长按事件
		mGv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id){
				Toast.makeText(GridViewActivity.this, "长按 pos:"+ position, Toast.LENGTH_SHORT).show();
				return true;	//当执行完成长按事件后不会再出发其他点击事件,即当前事件已处理完成,其他人不需再进行处理了;若为 return false; 则当长按事件完成后并不会停止事件的触发,点击事件同样会被触发。
			}
		});
	}
}

activity_gridview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmls:android="http://schemas.android.com...."
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:orientation="vertical"
	android:padding="15dp">
	<GridView
		android:id="@+id/gv"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:numColumns="3"
		android:horizontalSpacing="10dp"
		android:verticalSpacing="10dp"/>
</LinearLayout>

其中:
属性
numColumns=“3” GridView有几列, 该实例中为3列
horizontalSpacing 水平间距
verticalSpacing 垂直间距

创建一个adapter
gridview->New->Java Class
Name: MyGridViewAdapter
Kind: Class
Superclass:android.widget.BaseAdapter
Interface(s):
Package: com.skypan.helloworld.gridview
Visibility: √ Public Package Private
Modifiers: √ None Abstract

MyGridViewAdapter.java

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;


public class MyGridViewAdapter extends BaseAdapter {

	//声明变量
	private Context mContext;
	private LayoutInflater mLayoutInflater;
	
	/**
	*构造方法
	*/	
	public MyGridViewAdapter(Context context){
		this.mContext = context;
		mLayoutInflater = LayoutInflater.from(context);
	}
	
	/**
	* 数量
	*/
	@Override
	public int getCount(){
		return 10;
	}

	/**
	*
	*/
	@Override
	public Object getItem(int position) {
		return null;
	}

	/**
	*
	*/
	@Override
	public long getItemId(int position){
		return 0;
	}

	static class ViewHolder{
		//声明控件
		public ImageView imageView;
		public TextView textView;	
	}

	/**
	* 每个格子长什么样子(比较重要)
	*/
	@Override
	public View getView(int position, View convertView, ViewGroup parent){
		ViewHolder holder = null;
		if(convertView == null){
			convertView = mLayoutInlater.inflate(R.layout.Layout_grid_item,null);
			holder = new ViewHolder();	//实例化holder
			//找到控件
			holder.imageView = (ImageView) convertView.findViewById(R.id.iv_grid);
			holder.textView = (TextView) convertView.findViewById(R.id.tv_title);
			convertView.setTag(holder);
		}else{
			holder = (ViewHolder) convertView.getTag();
		}
		//赋值
		holder.textView.setText("黄昏");
		Glide.with(mContext).load("https://tr-osdcp.qunarzz.com/tr-osd-tr-space/img/367b811024238a00101c26ea2ec83e63.jpg_r_680x453x95_9a60f6c7.jpg").into(holder.imageView);
		return convertView;
	}



}

新建一个 layout样式
res/layout->New->Layout resource File
File Name: layout_grid_item
Root element: LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/..."
		android:orientation="vertical" 
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:gravity="centet_horizontal">	//水平居中
	<ImageView
		android:id="@+id/iv_grid"
		android:layout_width="match_parent"
		android:layout_height="100dp"
		android:scaleType="fitCenter"
		android:backgrount="@color/colorBlack"/>
	<TextView 
		android:id="@+id/tv_title"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:text="Hello"
		android:gravity="center"	//内容的对齐方式:居中
		android:textColor="@color/colorAccent"
		android:layout_marginTop="10dp"/>
</LinearLayout>

注:
记得在 AndroidManifext.xml 文件中声明相关activity

添加相关代码:

<activity android:name=".gridview.GridViewActivity"></activity>

GridView 网格视图的使用与listView的使用基本一致


代码有点混乱,后期有时间可能会统一进行整理!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值