gridview布局示例二(通过simpleAdapter进行图片等数据绑定)
2014-01-22 17:04
459 查看
http://blog.csdn.net/chenzheng_java/article/details/6199243
![](http://hi.csdn.net/attachment/201102/25/0_129861124310F4.gif)
上面的是最终效果图,现在贴出文件结构
![](http://hi.csdn.net/attachment/201102/25/0_1298611240t9zm.gif)
main.xml代码如下
[xhtml] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<!-- 主界面本身就是一个GridView,用于显示night_layout.xml组件信息 -->
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
>
</GridView>
night_layout.xml
[xhtml] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<!--
该布局文件相当于建立了一个新的组件,这个组件主要包含一个图片以及一个描述性文本
-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="4dip"
>
<ImageView
android:id="@+id/ItemImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
></ImageView>
<TextView
android:id="@+id/ItemText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/ItemImage"
android:text="androidText1"
/>
</RelativeLayout>
grid2.java
[java] view
plaincopy
package cn.com.android.grid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class grid2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取gridview对象
GridView gridView = (GridView) findViewById(R.id.gridView);
// 获取数据源
ArrayList<HashMap<String, Object>> sourceList = getData(10);
// 绑定数据源
gridView.setAdapter(new SimpleAdapter(this, sourceList, R.layout.night_layout,
new String[]{"ItemImage","ItemText"}, new int[]{R.id.ItemImage,R.id.ItemText}));
// 绑定事件触发
gridView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, Object> hashMap = (HashMap<String, Object>) parent.getItemAtPosition(position);
Toast.makeText(grid2.this, hashMap.get("ItemText").toString(), Toast.LENGTH_SHORT).show();
}
});
}
/**
*创造数据源,数据源中存放的数据为hashmap对象,hashmap中存放着相应的图片id以及描述文本信息
*/
private ArrayList<HashMap<String,Object>> getData(int number){
ArrayList<HashMap<String,Object>> sourceList = new ArrayList<HashMap<String,Object>>();
HashMap<String, Object> tempHashMap = new HashMap<String, Object>();
for (int i = 0; i < number; i++) {
tempHashMap.put("ItemImage", R.drawable.icon);
tempHashMap.put("ItemText", "图片"+i);
sourceList.add(tempHashMap);
tempHashMap = new HashMap<String, Object>();
}
return sourceList;
}
}
作者废话:
由代码我们可以看得出,对于gridview相关的应用,我们一般需要一个2个布局文件,一个布局文件(如night_layout.xml)定义组件存放数据,而另一个组件(如main.xml)则作为容器存放组件。
对于我们来说,无非就是
第一步:写好组件和容器,即定义好布局文件
第二步:整理数据源。一般的方法都是提供一个方法,方法内部放着对数据的详细处理,方法返回整理好的数据源
第三步:将数据源绑定到组件。这里通过setAdapter()进行的
第四步:为组件创建各种事件监听,与用户进行交互。
![](http://hi.csdn.net/attachment/201102/25/0_129861124310F4.gif)
上面的是最终效果图,现在贴出文件结构
![](http://hi.csdn.net/attachment/201102/25/0_1298611240t9zm.gif)
main.xml代码如下
[xhtml] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<!-- 主界面本身就是一个GridView,用于显示night_layout.xml组件信息 -->
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
>
</GridView>
night_layout.xml
[xhtml] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<!--
该布局文件相当于建立了一个新的组件,这个组件主要包含一个图片以及一个描述性文本
-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="4dip"
>
<ImageView
android:id="@+id/ItemImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
></ImageView>
<TextView
android:id="@+id/ItemText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/ItemImage"
android:text="androidText1"
/>
</RelativeLayout>
grid2.java
[java] view
plaincopy
package cn.com.android.grid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class grid2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取gridview对象
GridView gridView = (GridView) findViewById(R.id.gridView);
// 获取数据源
ArrayList<HashMap<String, Object>> sourceList = getData(10);
// 绑定数据源
gridView.setAdapter(new SimpleAdapter(this, sourceList, R.layout.night_layout,
new String[]{"ItemImage","ItemText"}, new int[]{R.id.ItemImage,R.id.ItemText}));
// 绑定事件触发
gridView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, Object> hashMap = (HashMap<String, Object>) parent.getItemAtPosition(position);
Toast.makeText(grid2.this, hashMap.get("ItemText").toString(), Toast.LENGTH_SHORT).show();
}
});
}
/**
*创造数据源,数据源中存放的数据为hashmap对象,hashmap中存放着相应的图片id以及描述文本信息
*/
private ArrayList<HashMap<String,Object>> getData(int number){
ArrayList<HashMap<String,Object>> sourceList = new ArrayList<HashMap<String,Object>>();
HashMap<String, Object> tempHashMap = new HashMap<String, Object>();
for (int i = 0; i < number; i++) {
tempHashMap.put("ItemImage", R.drawable.icon);
tempHashMap.put("ItemText", "图片"+i);
sourceList.add(tempHashMap);
tempHashMap = new HashMap<String, Object>();
}
return sourceList;
}
}
作者废话:
由代码我们可以看得出,对于gridview相关的应用,我们一般需要一个2个布局文件,一个布局文件(如night_layout.xml)定义组件存放数据,而另一个组件(如main.xml)则作为容器存放组件。
对于我们来说,无非就是
第一步:写好组件和容器,即定义好布局文件
第二步:整理数据源。一般的方法都是提供一个方法,方法内部放着对数据的详细处理,方法返回整理好的数据源
第三步:将数据源绑定到组件。这里通过setAdapter()进行的
第四步:为组件创建各种事件监听,与用户进行交互。
相关文章推荐
- gridview布局示例二(通过simpleAdapter进行图片等数据绑定)
- 使用ajax局部刷新gridview进行数据绑定示例
- android ListView布局之二(是用simpleAdapter绑定数据)
- android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView
- 使用ajax局部刷新gridview进行数据绑定示例
- android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView
- Android中ListView同过自定义布局并使用SimpleAdapter的方式实现数据的绑定
- Android采用ListView实现数据列表显示1-使用SimpleCursorAdapter进行数据绑定
- android ListView布局之二(是用simpleAdapter绑定数据)
- android ListView布局之二(是用simpleAdapter绑定数据)
- android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView
- -将DropDownList控件绑定 到GridView控当中,并调用方法给DropDownList控件在页面进行数据绑定
- 使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现
- GridView允许你通过EditIndex属性来修改数据的一行,同样也必须进行整行更新
- 使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现
- jquery通过select列表选择框对表格数据进行过滤示例
- 读取Excel数据绑定到Gridview进行显示
- 用 AJAX,局部刷新 GridView 进行数据绑定的简单实现
- 【Android学习笔记系列】AsyncTask、BaseAdapter整合异步加载用例(通过解析JSON格式数据加载网络图片内容)
- Dataset数据通过Web服务进行输出数据绑定