GridView网格控件的使用是安卓中经常用到的控件,用于把数据库中的数据显示在手机屏幕上,下面我们来一起分享一下它的使用方法。
这个例子实现的是把一些图片以指定的排列方式显示在用户手机上的效果。
整体思路:在xml文件中定义一个GridView控件和一个ImageView控件,然后新建一个cell.xml文件,在里面定义一个ImageView控件;在活动中实现OnItemSelectedListener,OnItemClickListener,定义一个整型数组,存放各个图片资源的ID,把各个图片以遍历数组的形式依次加入到Map类型的动态数组中,定义一个适配器,把这个布局文件中ImageView控件和新建的布局文件关联,并将Map类型的动态数组绑定到这个适配器上,将这个适配器绑定到GridView控件上,在onItemClick这个方法中,给ImageView控件设置相应索引的图片,在onItemSelected这个方法中,给ImageView控件设置相应索引的图片(这个可以没有)。就这样实现了将一些图片展示以一定的排列顺序显示在用户手机上的效果。
activity_main.xml文件:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
>
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:horizontalSpacing="6dp"
android:verticalSpacing="6dp"
android:numColumns="4"
android:padding="20dp"
>
</GridView>
<ImageView
android:id="@+id/imageview"
android:layout_width="fill_parent"
android:layout_height="150dp"
/>
</LinearLayout>
cell.xml文件:
<ImageView
android:id="@+id/imageview"
android:layout_width="48dp"
android:layout_height="48dp"
/>
MainActivity.java文件:
public class MainActivity extends Activity implements OnItemSelectedListener,OnItemClickListener{
private ImageView imageView;
private int[] resIds=new int[]{
R.drawable.new1,R.drawable.new2,R.drawable.new3,R.drawable.new4,R.drawable.new5,
R.drawable.new6,R.drawable.new7,R.drawable.new8,R.drawable.new9,R.drawable.new10
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridView=(GridView)findViewById(R.id.gridview);
List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
for(int i=0;i<resIds.length;i++){//把所有图片都放到list中
Map<String, Object> cell=new HashMap<String, Object>();
cell.put("imageview", resIds[i]);
list.add(cell);
}
// 定义一个适配器,把本布局的imageview和定义控件的布局关联
SimpleAdapter simpleAdapter=new SimpleAdapter(this,list,R.layout.cell,new String[]{"imageview"},new int[]{R.id.imageview});
gridView.setAdapter(simpleAdapter);//绑定适配器
imageView=(ImageView)findViewById(R.id.imageview);
gridView.setOnItemClickListener(this);
gridView.setOnItemSelectedListener(this);
imageView.setImageResource(resIds[0]);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
imageView.setImageResource(resIds[position]);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
imageView.setImageResource(resIds[position]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}