Android——GrideView学习

一、简介:

在Android开发中,GridView是一种灵活的布局控件,用于展示一组数据或图片。GridView可以在垂直或水平方向上显示多个项目,类似于网格状布局。

二、GridView中常用的一些属性:

android:numColumns=”auto_fit” //GridView的列数设置为自动
android:columnWidth=”90dp " //每列的宽度,也就是Item的宽度
android:stretchMode=”columnWidth"//缩放与列宽大小同步
android:verticalSpacing=”10dp” //两行之间的边距
android:horizontalSpacing=”10dp” //两列之间的边距
android:cacheColorHint="#00000000" //去除拖动时默认的黑色背景
android:listSelector="#00000000" //去除选中时的黄色底色
android:scrollbars="none" //隐藏GridView的滚动条
android:fadeScrollbars="true" //设置为true就可以实现滚动条的自动隐藏和显示
android:fastScrollEnabled="true" //GridView出现快速滚动的按钮(至少滚动4页才会显示)
android:fadingEdge="none" //GridView衰落(褪去)边缘颜色为空,缺省值是vertical。(可以理解为上下边缘的提示色)
android:fadingEdgeLength="10dip" //定义的衰落(褪去)边缘的长度
android:stackFromBottom="true" //设置为true时,你做好的列表就会显示你列表的最下面
android:transcriptMode="alwaysScroll" //当你动态添加数据时,列表将自动往下滚动最新的条目可以自动滚动到可视范围内
android:drawSelectorOnTop="false" //点击某条记录不放,颜色会在记录的后面成为背景色,内容的文字可见(缺省为false)

三、使用方法:

GridView的使用方法和ListView类似。在使用GridView时,通常需要自定义Adapter来填充数据。Adapter是连接数据和GridView之间的桥梁,负责将数据转换为视图展示给用户。在Adapter中需要重写getView()方法来设置每个item的视图。

GrideView实例:
image.png
public class MyGridActivity extends AppCompatActivity {

    GridView gridView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String[] arr = {"菠萝","芒果","石榴","葡萄"};

        setContentView(R.layout.my_gride);
        gridView = findViewById(R.id.my_gride_view);
        // 设置列数
        gridView.setNumColumns(3);

        //自定义BaseAdapter适配器
        MyAdapter adapter = new MyAdapter(this,R.layout.my_gride_item,list);

        gridView.setAdapter(adapter);

        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                Toast.makeText(MyGridActivity.this, arr[position], Toast.LENGTH_SHORT).show();
            }
        });

    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onStop() {
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}

创建GridView的xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <GridView
        android:id="@+id/my_gride_view"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="10dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </GridView>

</LinearLayout>

创建item的xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/img"
        android:layout_width="64dp"
        android:layout_height="64dp"
        android:layout_centerInParent="true"
        android:layout_centerHorizontal="true"
        />

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/img"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:textSize="18sp"
        />

</RelativeLayout>

自定义MyAdapter

public class MyAdapter extends BaseAdapter {

    private Context mContext;
    private List<Map<String, String>> mList;

    private int mViewId;

    public MyAdapter(Context context,int viewId,List<Map<String, String>>list) {
        this.mContext = context;
        this.mList = list;
        this.mViewId = viewId;
    }

    @Override
    public int getCount() {
        return mList.size();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if(convertView == null) {
            viewHolder = new ViewHolder();
            convertView = LayoutInflater.from(mContext).inflate(mViewId, null);
            viewHolder.nameTX = convertView.findViewById(R.id.name);
            viewHolder.imageV = convertView.findViewById(R.id.img);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder)convertView.getTag();
        }

        viewHolder.nameTX.setText(mList.get(position).get("name"));
        viewHolder.imageV.setImageResource(Integer.parseInt(mList.get(position).get("img")));

        return convertView;
    }

    class ViewHolder {
        private TextView nameTX;
        private ImageView imageV;
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容