常用属性
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的使用基本一致
代码有点混乱,后期有时间可能会统一进行整理!!!