今天来讲一下GridView网格视图的使用,主要讲一下它的使用步骤。
以后如果要写GridView了,可以套着这个去写,具体可以多看看一些代码的注释
1.GridView的文件activity_gridview用来声明组件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".GridViewActivity"
android:orientation="vertical"
android:padding="15dp">
<GridView
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"></GridView>
</LinearLayout>
2.对应的Activity的文件GridViewActivity,设置点击事件的响应以及Adapter的应用
package com.example.androidstudy1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;
public class GridViewActivity extends AppCompatActivity {
GridView gv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gridview);
gv=findViewById(R.id.gv);
gv.setAdapter(new MyGridViewAdapter(GridViewActivity.this));
gv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(GridViewActivity.this,"position"+i, Toast.LENGTH_SHORT).show();
//跳转
}
});
gv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(GridViewActivity.this,"长按position"+i,Toast.LENGTH_SHORT).show();
return true;
}
});
}
}
3.layout_grid_item创建数据模型,用来定义GridView中一个Item的具体属性
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_grid"
android:layout_width="match_parent"
android:layout_height="100dp"
android:scaleType="fitCenter"
android:background="@color/colorGray"/>
<TextView
android:id="@+id/tv_grid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Demo"
android:textColor="@color/colorAccent"
android:gravity="center"
android:layout_marginTop="10dp"/>
</LinearLayout>
4.定义MyGridViewListAdapter,用来创建adapter适配器
package com.example.androidstudy1;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
public class MyGridViewAdapter extends BaseAdapter {
Context context;
LayoutInflater layoutInflater;
public MyGridViewAdapter(Context context){
this.context=context;
layoutInflater=LayoutInflater.from(context);
}
public int getCount() {
return 10;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
static class ViewHolder{
public ImageView imageView;
public TextView textView;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder=null;
if (view==null){
view=layoutInflater.inflate(R.layout.layout_grid_item,null);
holder=new ViewHolder();
holder.imageView=view.findViewById(R.id.iv_grid);
holder.textView=view.findViewById(R.id.tv_grid);
view.setTag(holder);
}
else {
holder=(ViewHolder)view.getTag();
}
holder.textView.setText("猫");
Glide.with(context).load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1563802391&di=fd567201f8a2fb5a89fc80bcdd2fa670&imgtype=jpg&er=1&src=http%3A%2F%2Fpic25.nipic.com%2F20121122%2F11436980_223244249120_2.jpg").into(holder.imageView);
return view;
}
}