GridView 网格视图
  HvTJUzsxOBtS 2023年11月25日 29 0



文章目录

  • 1、简介
  • 2、使用系统自带的适配器 SimpleAdapter
  • 1)、文件结构
  • 2)、activity_main.xml 文件
  • 3) item.xml 文件
  • 4) MainActivity.java 文件
  • 3、自定义 adapter 文件
  • 1) 文件结构
  • 2)activity_main.xml
  • 3) item.xml 文件
  • 4)ViewData .java 文件
  • 5)CustomGridViewAdapter.java 文件
  • 6)MainActivity.java 文件


1、简介

就像如下 网格视图显示内容

GridView 网格视图_gridView

2、使用系统自带的适配器 SimpleAdapter
1)、文件结构

GridView 网格视图_xml_02

2)、activity_main.xml 文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <GridView
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:horizontalSpacing="1dip"
        android:numColumns="3" /> <!--3 就是3 列 ,4  就是4列-->
    

</RelativeLayout>
3) item.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"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </TextView>

</LinearLayout>
4) MainActivity.java 文件
package com.example.lum.testapk;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.app.Activity;
import android.widget.Toast;

public class MainActivity extends Activity implements AdapterView.OnItemClickListener {
	private GridView gridview;
	private int[] images = { R.drawable.image1, R.drawable.image2,
			R.drawable.image3, R.drawable.image4, R.drawable.image5,
			R.drawable.image6, R.drawable.image7, R.drawable.image8,
			R.drawable.image9, R.drawable.image10, R.drawable.image11,
			R.drawable.image12, R.drawable.image13, R.drawable.image14, };     //加载 draw 里面的图片

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		gridview = (GridView) findViewById(R.id.gridview);
		gridview.setAdapter(getAdapter());  //设置 gridview 和适配器链接
		gridview.setOnItemClickListener(this); //监听 点击事件
	}

	private ListAdapter getAdapter() {
		List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();//list 中存放hash Map ,hashMap 对应名称 和对应 图片
		for (int i = 0; i < images.length; i++) {
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("txt", "娃娃_" + i);
			map.put("img", images[i]);
			list.add(map);
		}
		/**
		 * Constructor
		 *
		 * @param context 与此SimpleAdapter关联的视图正在运行的上下文
		 * @param data 所有映射的数据来源
		 * @param resource 数据所要映射的item 布局 xml
		 *
		 * @param from 将添加到与每个列关联的映射中的列名称列表项目。
		 * @param to 将要添加对应数据的组件
		 */
		SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.item,
				new String[] { "txt", "img" }, new int[] { R.id.textview,
						R.id.imageview });
		return adapter;
	}

	//响应点击事件
	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
		Toast.makeText(this,"position is: " + position, Toast.LENGTH_SHORT).show();
		Log.i(getLocalClassName().toString(),"position is :" + position);
	}
}
3、自定义 adapter 文件
1) 文件结构

GridView 网格视图_java_03

2)activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <GridView
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:horizontalSpacing="1dip"
        android:numColumns="3" /> <!--3 就是3 列 ,4  就是4列-->


</RelativeLayout>
3) item.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"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </TextView>

</LinearLayout>
4)ViewData .java 文件
package com.example.lum.testapk;

/**
 * Created by lum on 2019/7/10.
 */

public class ViewData {
    private String  name = null; //图片的名称
    private int pictureId ; //图片的Id

    public void  setName(String name){
        this.name= name;
    }
    public String  getName(){
        return  this.name;
    }

    public void  setPictureId(int pictureId){
        this.pictureId = pictureId;
    }

    public int getPictureId() {
        return this.pictureId;
    }
}
5)CustomGridViewAdapter.java 文件
package com.example.lum.testapk;

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 java.util.List;

/**
 * Created by lum on 2019/7/10.
 */

public class CustomGridViewAdapter extends BaseAdapter {
    private Context context;
    private List<ViewData> listData;

    public CustomGridViewAdapter(Context context,List<ViewData> listData){
        this.context = context;
        this.listData = listData;
    }


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

    @Override
    public Object getItem(int position) {
        return listData.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;
        ViewHolder viewHolder;
        if (convertView == null){
            //加载布局
            view = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
            viewHolder = new ViewHolder();
            viewHolder.imageView = (ImageView) view.findViewById(R.id.imageview);
            viewHolder.textView = (TextView) view.findViewById(R.id.textview);
            view.setTag(viewHolder);
        } else {
            view = convertView;
            viewHolder = (ViewHolder) view.getTag();
        }

        viewHolder.imageView.setImageResource(listData.get(position).getPictureId());
        viewHolder.textView.setText(listData.get(position).getName());
        return view;
    }

    private class ViewHolder{
        private ImageView imageView;
        private TextView textView;
    }
}
6)MainActivity.java 文件
package com.example.lum.testapk;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.app.Activity;
import android.widget.Toast;

public class MainActivity extends Activity implements AdapterView.OnItemClickListener {
	private GridView gridview;
    private  List<ViewData> listData;
    private  ViewData viewData;
    private CustomGridViewAdapter customGridViewAdapter;
	//加载 draw 里面的图片
	private int[] images = { R.drawable.image1, R.drawable.image2,
			R.drawable.image3, R.drawable.image4, R.drawable.image5,
			R.drawable.image6, R.drawable.image7, R.drawable.image8,
			R.drawable.image9, R.drawable.image10, R.drawable.image11,
			R.drawable.image12, R.drawable.image13, R.drawable.image14, };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		gridview = (GridView) findViewById(R.id.gridview);
		listData = new ArrayList<ViewData>();

		initData();
		customGridViewAdapter = new CustomGridViewAdapter(this,listData);
		gridview.setAdapter(customGridViewAdapter);  //设置 gridview 和适配器链接
		gridview.setOnItemClickListener(this); //监听 点击事件
	}

	//创建 数据对象 保存在 list
	private void initData() {
		for (int i = 0 ; i < images.length; i++) {
			viewData = new ViewData();
			viewData.setName("娃娃_" + i);
			viewData.setPictureId(images[i]);
			listData.add(viewData);
		}
	}


	//响应点击事件
	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
		Toast.makeText(this,"position is: " + position, Toast.LENGTH_SHORT).show();
		Log.i(getLocalClassName().toString(),"position is :" + position);
	}
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月25日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   55   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   111   0   0 Java
  8s1LUHPryisj   2024年05月17日   47   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
HvTJUzsxOBtS