文章目录
- 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、简介
就像如下 网格视图显示内容
2、使用系统自带的适配器 SimpleAdapter
1)、文件结构
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) 文件结构
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);
}
}