Android 开发:(八)初识GridView(九宫格布局)

版权声明:转载请注明出处:http://blog.csdn.net/kevindongkun https://blog.csdn.net/Kevindongkun/article/details/62423025

既然是初识,就按最简单的走吧!
三步走:

第一步:GridView初始化

在主xml文件添加一个gridview控件 :
< GridView
android:id=”@+id/gv_jianshi”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:layout_marginLeft=”@dimen/margin_3x”
android:gravity=”center”
android:listSelector=”@android:color/transparent”
android:numColumns=”4” //每行显示条目
android:scrollbars=”none”
android:verticalSpacing=”@dimen/margin_4x” //列间距
android:horizontalSpacing=”@dimen/margin_4x”> //行间距

第二步:设置adapter

.activity文件:
这个页面主要有两个事:

1.创建adapter: JS_Adapter 继承 BaseAdapter(系统自带显示个数和布局方法);
2. 设置JS_Adapter的对象js_adapter;

代码:

public class InformationQuery_MainPersonActivity extends BaseActivity {

private GridView  gv_jianshi;
private String JsData[] = {"刘备", "关羽", "张飞"};
//2.
private  JS_Adapter js_adapter;
@Override
protected void onCreate(Bundle arg0) {
    // TODO Auto-generated method stub
    super.onCreate(arg0);
    setContentView(R.layout.informationquery_keyperson);
    gv_jianshi = (GridView)findViewById(R.id.gv_jianshi); //创建关联
    js_adapter = new JS_Adapter();  //JS_Adapter继承与BaseAdapter 
    gv_jianshi.setAdapter(js_adapter);     //利用adapter添加item
    gv_jianshi.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // 点击事件:
        }
    });
}

//1. 创建一个JS_Adapter 继承于BaseAdapter :

class JS_Adapter extends BaseAdapter {
@Override
类似于ios中uicollectionview的协议方法:
public int getCount() {

        // TODO Auto-generated method stub
        //显示条目个数
        return JsData.length;
    }

@Override

    public Object getItem(int position) {

        // TODO Auto-generated method stub
        return null;
    }

@Override

    public long getItemId(int position) {
                // TODO Auto-generated method stub
        return 0;
    }

@Override

    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        //显示内容布局(类似于ios的自定义cell过程)
        if (convertView == null) {
            convertView = View.inflate(当前activity.this, R.layout.item.xml, null);
        }
        //这里用ViewHolderUtils封装了一个与item关联的方法(封装了一下),也可以直接在这里写。
        Button button = ViewHolderUtils.get(convertView, R.id.info_personItem);
        button.setText(JsData[position]);
        return convertView;
    }
}

}

第三步、 item.xml

info_personItem.xml文件:这里面就是对每一个格子布局,具体每个格子里显示的样子

< Button
android:id=”@+id/info_personItem”
style=”@style/gszwfw_list_content”
android:layout_width=”@dimen/margin_space_140”
android:layout_height=”@dimen/margin_space_45”
android:background=”@drawable/shape_corner_person”
android:clickable=”false”
android:focusable=”false”
android:text=”xxx”
android:textColor=”#8C8C8C” />

ViewHolderUtils:

package com.gsww.ipolicy.widget;

import android.util.SparseArray;
import android.view.View;
public class ViewHolderUtils {
/**
* 增加一个私有构造函数防止外部实例化
*/
private ViewHolderUtils() {
}
/**
*
* @功能 从缓存中 获取 View 控件 对象,如果不存在缓存就初始化后放入缓存,以备下次使用; 知识点:
* Android应用性能优化之使用SparseArray替代HashMap;
* @param view
* 当前Item 布局 View
* @param id
* 当前Item中 某个View 的id值
* @return 当前Item中对应id的View对象
* @作者 2014-5-19 / wzy
*/
public static T get(View view, int id) {
SparseArray viewHodler = (SparseArray) view.getTag();
if (viewHodler == null) {
viewHodler = new SparseArray();
view.setTag(viewHodler);
}
View childView = viewHodler.get(id);
if (childView == null) {
childView = view.findViewById(id);
viewHodler.put(id, childView);
}
return (T) childView;
}
}

猜你喜欢

转载自blog.csdn.net/Kevindongkun/article/details/62423025