GridView 使用詳解

和你一起終身學(xué)習(xí),這里是程序員Android
經(jīng)典好文推薦,通過閱讀本文,您將收獲以下知識點(diǎn):
一、GridView 簡介
二、 GridView 主要使用方法
三、 GridView 使用Demo
一、GridView 簡介
在學(xué)習(xí)GridView 之前,我們需要先了解GridView的繼承關(guān)系,
GridView的繼承關(guān)系如下:
java.lang.Object
? android.view.View
? android.view.ViewGroup
? android.widget.AdapterView
? android.widget.AbsListView
? android.widget.GridView
GridView?跟ListView?很類似,Listview?主要以列表形式顯示數(shù)據(jù),GridView?則是以網(wǎng)格形式顯示數(shù)據(jù),掌握ListView?使用方法后,會(huì)很輕松的掌握GridView的使用方法。
二、 GridView 主要使用方法
GridView主要通過使用自定義BaseAdapter?來適配數(shù)據(jù),進(jìn)而顯示到GridView中。主要使用方法如下:
1. 準(zhǔn)備數(shù)據(jù)源
list = new ArrayList<Map<String, Object>>();
2. 為數(shù)據(jù)源設(shè)置適配器
MyAdapter adapter = new MyAdapter();
3. 將適配過后點(diǎn)數(shù)據(jù)顯示在GridView 上
gridView.setAdapter(adapter);
三、 GridView 使用Demo
1.實(shí)現(xiàn)效果如下

GridView
實(shí)現(xiàn)代碼如下
private GridView gridView;
private List<Map<String, Object>> list;
private int images[] = { R.drawable.gril, R.drawable.ic_launcher,
R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril,
R.drawable.ic_launcher, R.drawable.gril, R.drawable.ic_launcher,
R.drawable.gril };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid_view_method);
gridView = (GridView) findViewById(R.id.gv);
// 1. 準(zhǔn)備數(shù)據(jù)源
list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < images.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("image", images[i]);
map.put("text", "圖片" + i);
list.add(map);
}
// 2.為數(shù)據(jù)源設(shè)置適配器
MyAdapter adapter = new MyAdapter();
// 3.將適配過后點(diǎn)數(shù)據(jù)顯示在GridView 上
gridView.setAdapter(adapter);
// item點(diǎn)擊事件處理
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//
Toast.makeText(GridViewMethod.this,
list.get(position).get("text").toString(),
Toast.LENGTH_SHORT).show();
}
});
}
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
// 第一次加載創(chuàng)建View,其余復(fù)用 View
convertView = LayoutInflater.from(GridViewMethod.this).inflate(
R.layout.gridview_item_img_tv, null);
holder = new ViewHolder();
holder.imageView = (ImageView) convertView
.findViewById(R.id.grid_img);
holder.textView = (TextView) convertView
.findViewById(R.id.grid_tv);
// 打標(biāo)簽
convertView.setTag(holder);
} else {
// 從標(biāo)簽中獲取數(shù)據(jù)
holder = (ViewHolder) convertView.getTag();
}
// 根據(jù)key值設(shè)置不同數(shù)據(jù)內(nèi)容
holder.imageView.setImageResource((Integer) list.get(position).get(
"image"));
holder.textView.setText((String) list.get(position).get("text"));
return convertView;
}
}
class ViewHolder {
ImageView imageView;
TextView textView;
}
2.GridView 布局如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.android.program.programandroid.ListView.GridViewMethod">
<GridView
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="3"
android:verticalSpacing="10dp" />
LinearLayout>
3.item 布局 如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/grid_img"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:gravity="center_horizontal"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/grid_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:textColor="@android:color/darker_gray"
android:text="test"
android:gravity="center_horizontal"
android:textSize="25sp" />
LinearLayout>至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺得很優(yōu)秀,歡迎點(diǎn)擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請聯(lián)系小編刪除。同時(shí)感謝您的閱讀,期待您的關(guān)注。
點(diǎn)個(gè)在看,方便您使用時(shí)快速查找!
評論
圖片
表情
