在 android 的 app 程序里面,可以通过 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"/>
我们需要建立一个新的 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();
}
});我们这样就完成了一个可以展示路径下的文件夹列表的功能了