首页 > 代码库 > ListView、GridView

ListView、GridView

listView的使用步骤:
 使用listview显示数据列表的步骤:
    1、在布局文件中添加一个listview控件
    2、在代码中找到这个listview控件
    3、创建一个数据适配器为listview填充数据


如何创建listView的数据适配器?
void setAdapter(ListAdapter adapter)
Sets the data behind this ListView.

获得当前正在使用的Adapter
ListAdapter getAdapter()
Returns the adapter currently in use in this ListView.

重点补充:
listview的作用:用来在界面上显示数据列表
MVC:   
        技术分享Model   Person(自定义的那些item.xml文件   模型)
            技术分享View     ListView
                技术分享Control     Adapter 数据适配器

常用的适配器;
  1. ArrayAdapter
  2. 使用ArrayAdapterlistview填充数据的步骤:
  3. 1、在布局文件中添加ListView
  4. 2、在代码中初始化这个listview控件
  5. 3、调用listview.setAdapter()填充数据
  6. //使用适配器为listview填充数据
  7. //new ArrayAdapter:context 上下文,resourceId 条目布局文件的资源ID,object[] 要显示的数据
  8. lv.setAdapter(new ArrayAdapter<String>(this, R.layout.item, new String[]{"王菲","谢霆锋","张柏芝","李亚鹏"}));
  1. SimpleAdapter
  2. 使用ArrayAdapterlistview填充数据的步骤:
  3. 1、在布局文件中添加ListView
  4. 2、在代码中初始化这个listview控件
  5. 3、调用listview.setAdapter()填充数据
  6. //使用适配器为listview填充数据
  7. //new SimpleAdapter:context 上下文,resourceId 条目布局文件的资源ID,String[] 要显示的列名,int[] 指定列显示在item布局文件的哪个控件上
  8. lv.setAdapter(new SimpleAdapter(this, data, R.layout.item, new String[]{"id","name"}, new int[]{R.id.tv_id,R.id.tv_name}));
  9. 关联:条目的布局文件(这种简单的适配器只适用于这种布局)



自定义适配器:用法和下面的GridView差不多,可以参考下面的代码

    

GridView的使用实例:
  1. GridView gv_home =(GridView)findViewById(R.id.gv_home);
  2. gv_home.setAdapter(new MyAdapter());

给item添加点击事件:
  1. gv_home.setOnItemClickListener(new OnItemClickListener() {
  2. //点击item时调用这个方法
  3. @Override
  4. public void onItemClick(AdapterView<?> parent, View view,
  5. int position, long id) {
  6. switch (position) {
  7. case 0://手机防盗
  8. //检查之前是否设置了密码,如果设置了就弹出输入密码的对话框,
  9. String password = sp.getString("password", "");
  10. if(TextUtils.isEmpty(password)){
  11. //显示设置密码的对话框
  12. showSetupPasswordDialog();
  13. }else{
  14. //显示输入密码的对话框
  15. showEnterPasswordDialog();
  16. }
  17. break;
  18. case 8://设置中心
  19. intent = new Intent(HomeActivity.this,SettingsActivity.class);
  20. startActivity(intent);
  21. break;
  22. default:
  23. break;
  24. }
  25. }
  26. });


自定义适配器:
  1. private class MyAdapter extends BaseAdapter{
  2. @Override//注:九宫格的数目
  3. public int getCount() {
  4. return names.length;
  5. }
  6. @Override//注:每有一个条目(item)在屏幕上显示都会调用该方法
  7. public View getView(int position, View convertView, ViewGroup parent) {
  8. View view;
  9. if(convertView == null){
  10. view = View.inflate(HomeActivity.this, R.layout.gv_home_item, null);
  11. }else{
  12. view = convertView;
  13. }
  14. ImageView iv_icon = (ImageView) view.findViewById(R.id.iv_icon);
  15. TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
  16. iv_icon.setImageResource(ids[position]);
  17. tv_name.setText(names[position]);
  18. return view;
  19. }
  20. @Override//注:得到指定位置的item
  21. public Object getItem(int position) {
  22. // TODO Auto-generated method stub
  23. return null;
  24. }
  25. @Override//得到指定位置item的id值
  26. public long getItemId(int position) {
  27. // TODO Auto-generated method stub
  28. return 0;
  29. }
  30. }




来自为知笔记(Wiz)


ListView、GridView