介绍
介绍
在 android 的 app 程序里面,可以通过 GridView 控件将一组内容以网格形式显示出来
今天我们就来学习 GridView 的使用方法
教程
布局
GridView
我们需要在 activity_main 里放一个 GridView 控件
<GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:background="#ffffff" android:columnWidth="160dp" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp"/>
ListItem
我们需要建立一个新的 layout 布局,布局名称是 list_item,在里面放上 ImageView 和 TextView,用来显示图标和标题
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#ffffff" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/img_item" android:src="@mipmap/ic_launcher" android:layout_width="160dp" android:layout_height="160dp" android:scaleType="centerCrop"/> <TextView android:id="@+id/txt_item" android:textColor="#000000" android:text="文字区域" android:layout_width="160dp" android:layout_height="22dp" android:textSize="16dp" android:textAlignment="center"/> </LinearLayout>
代码
属性
我们需要下面几个属性
dirs:文件夹列表
gridView:网格控件
dataList:数据集合
gridViewAdapter:网格适配器
private String[] dirs; private GridView gridView; private java.util.List<Map<String, Object>> dataList; private SimpleAdapter gridViewAdapter;
采集数据
通过下面的代码采集路径下的文件夹列表
File dir; Integer i, l, fl; dir = new File(dirAbsPath); File[] subFile = dir.listFiles(); l = subFile.length; if(l > 0){ fl = 0; // count tfij for(i=0;i<l;i++){ if(subFile[i].isDirectory()){ fl ++; } } // save tfij dirs = new String[fl]; fl = 0; for(i=0;i<l;i++){ if(subFile[i].isDirectory()){ dirs[fl] = subFile[i].getName(); fl ++; } } }
装载数据
通过下面的代码将 dataList 里的数据装载到 gridView 里
dataList = new ArrayList<Map<String, Object>>(); if(dirs != null){ for(int i=0;i<dirs.length;i++){ Map<String, Object> map = new HashMap<String, Object>(); map.put("img", R.mipmap.ic_launcher); map.put("txt", dirs[i]); dataList.add(map); } } gridViewAdapter = new SimpleAdapter(this, dataList, R.layout.list_item, new String[]{"img", "txt"}, new int[]{R.id.img_item, R.id.txt_item}); gridView.setAdapter(gridViewAdapter);
设置点击事件
为用户点击网格内的图标的动作增加事件处理
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String a = String.format("pos: %d, id: %d, name:%s", position, id, dirs[position]); Toast.makeText(getApplication(), a, Toast.LENGTH_SHORT).show(); } });
总结
我们这样就完成了一个可以展示路径下的文件夹列表的功能了