既然是初识,就按最简单的走吧!
三步走:
第一步: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;
}
}