huohu00 2015-04-22
现在在做一个小项目,用到了基础的GridView和ListView。在此做一个记录。项目的主界面是用DrawerLayout实现侧滑,顶部栏使用ToolBar,SlidingTabLayout和ViewPager实现左右切换页卡,多个Fragment通过Adapter适配到ViewPager上。其中两个页卡就是用的GridView和ListView。其他控件会另起新的随笔来写。
两个Tab的效果如下

比较简单直接上代码。
第一个Tab,布局就是一个GridView,里面的item是ImageView加TextView
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/gridview1"
android:numColumns="auto_fit"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:background="@color/background_material_light"
>
</GridView><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="90dp"
android:layout_height="wrap_content"
android:paddingRight="1dp"
>
<ImageView
android:id="@+id/itemImage"
android:layout_width="90dp"
android:layout_height="90dp"
android:scaleType="centerCrop"
android:layout_centerHorizontal="true"/>
<TextView
android:id="@+id/itemText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/itemImage"
android:layout_centerHorizontal="true"
android:text="textview01"
/>
</RelativeLayout>GridView里有几个属性:
android:numColumns="auto_fit" //列数自动(一行显示几个)
android:columnWidth="90dp" //每列宽度
android:stretchMode="columnWidth" //缩放与列宽同步第二个Tab,ListView布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/second_listView2"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="3dip">
<ImageView
android:id="@+id/second_itemImage"
android:layout_width="30dp"
android:layout_height="30dp"
/>
<TextView
android:id="@+id/second_itemText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/second_itemImage"
android:layout_marginLeft="10dip"
/>
</RelativeLayout>往GridView里放数据,用了SimpleAdapter。ListView里放数据也是同样的代码
1 GridView gridView = (GridView) view.findViewById(R.id.gridview1);
2
3 ArrayList<HashMap<String, Object>> listImageItem = new ArrayList<>();
4 for (int i = 0; i <100; i++) {
5 HashMap<String, Object> map = new HashMap<>();
6 map.put("ItemImage", R.mipmap.ic_launcher);
7 map.put("ItemText", "NO." + i);
8 listImageItem.add(map);
9 }
10
11 SimpleAdapter adapter = new SimpleAdapter(getActivity(), listImageItem,
12 R.layout.item_picture, new String[]{"ItemImage","ItemText"},
13 new int[]{R.id.itemImage, R.id.itemText});
14 gridView.setAdapter(adapter);
15 gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
16 @Override
17 public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
18 TextView content = (TextView) view.findViewById(R.id.itemText);
19
20 }
21 });