GridView和ListView简单使用

  现在在做一个小项目,用到了基础的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         });
时间: 2024-12-29 11:24:57

GridView和ListView简单使用的相关文章

ScrollView中嵌套GridView,Listview的办法

按照android的标准,ScrollView中是不能嵌套具有滑动特性的View的,但是有时如果设计真的有这样做的需要,或者为了更方便简单的实现外观(比如在外在的大布局需要有滑动的特性,并且内部有类似于List的UI结构,那么ListView + Adpater的方式来实现里面的效果就很方便,算是违规抄近道的一种方式吧),有时就会不得不采用这种怪异的组合方式. 先说下这种方式如果不做特殊处理时会出现的冲突和问题: 1,在SrollView中嵌套ListView,ListView的显示会有问题,只

WPF DataGrid、ListView 简单绑定

DataGrid运行效果: xaml 代码: DataGridName= dtgData ItemsSource= {Binding} AutoGenerateColumns= False DataGrid.Columns DataGridTextColumnBinding= {BindingPath=id} Header= ID HeaderStringFormat= id / DataGridTextColumnBinding= {BindingPath=name} Header= 名称 H

ScrollView下嵌套GridView或ListView默认不在顶部的解决方法

当ScrollView下嵌套GridView或ListView时,如果内容超过一屏默认位置不在ScrollView的顶部,用scrollViewMsg.scrollTo(0,0)设置也不起作用,这是因为嵌套GridView或ListView获了焦点,解决方法有如下几种: 方法1把ScrollView里的第一个View获取焦点: baseView.setFocusable(true); baseView.setFocusableInTouchMode(true); baseView.request

GridView与ListView冲突

由于GridView与listView都是继承自ScrollView,所以两个控件放在一起时需要重写控件方法 public class MyGridView extends GridView{ public MyGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public MyGridView(Context context, AttributeSet

Android开发经验分享-GridView、ListView内容错乱

在使用GridView.ListView的过程中遇到内容错乱的问题,费了较长时间才找到问题的根源,特地总结一下. 1.在自定义adapter中没有给每一项都设置内容导致内容错乱: @Override public View getView(final int position, View convertView, ViewGroup parent) { if( null == convertView ){ mGridHolder = new GridHolder( ); convertView

ScrollView中嵌套GridView,ListView只显示一行的解决办法

转载:http://blog.csdn.net/luohai859/article/details/39347583 关于为什么只显示一行,个人理解是:如果单独使用GridView和ListView,里面的内容是固定的,底层系统很容易计算出控件要占用的宽高,当外面嵌套一层ScrollView后,就能做上下或左右滑动,但能滑动多少系统不知道,这时就需要你给计算出一个滑动区域给ScrollView.而这个数值就是通过GridView和ListView中的内容总的宽高之和.有更精确的理解欢迎赐教.解决

Android基础入门教程——2.4.2 ListView简单实用

Android基础入门教程--2.4.2 ListView简单实用 标签(空格分隔): Android基础入门教程 本节引言: 一口气把Android入门网络编程的章节写完了,本节我们来继续学习没有讲完的UI控件部分, 回顾上一节,我们介绍了Adapter适配器的概念,然后学习了三个最简单的适配器的使用: ArrayAdapter,SimpleAdapter和SimpleCursorAdapter,而本节给大家讲解的是第一个 需搭配Adapter使用的UI控件:ListView,不过在版本中被R

解决ScrollView包含GridView或ListView显示不完整的问题

问题描述: ScrollView如果包含GridView或者ListView这样的控件,会导致后者显示不完整.默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,因为它的高度是无法计算的. 所以此问题由来已久,网上的方法很多只解决了问题的一半,另外一半问题是:ScrollView不从开始位置开始显示,如下图: 解决方法: 以ScrollView包含GridView为例. 一.定义自己的Gridview,覆写onMeasure方法 public class My

Android 嵌套GridView,ListView只显示一行的解决办法

重写ListView.GridView即可: public class MyListView extends ListView { public MyListView(Context context) { // TODO Auto-generated method stub super(context); } public MyListView(Context context, AttributeSet attrs) { // TODO Auto-generated method stub su