ListView的使用总结
 基本使用:
   步骤:在布局文件中定义一个ListView控件-在活动中获得ListView的实例-获得适配器adapter的实例并且传入三个参数-把适配器对象传递给listview实例

  1. public class MainActivity extends Activity{
  2. ListView contactsView;
  3. ArrayAdapter<String> adapter;
  4. List<String> contactsList=new ArrayList<String>();
  5. protected void onCreate(Bundle savedInstanceState){
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. contactsView=(ListView)findViewById(R.id.contactsView);
  9. adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactsList);
  10. contactsView.setAdapter(adapter);
  11. readContacts();
  12. }
  13. public void readContacts(){
  14. Cursor cursor=null;
  15. try{
  16. cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
  17. while(cursor.moveToNext()){
  18. String name=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
  19. String number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
  20. contactsList.add(name+"/n"+number);
  21. }
  22. }catch(Exception e){
  23. e.printStackTrace();
  24. }finally{
  25. if(cursor!=null){
  26. cursor.close();
  27. }
  28. }
  29. }
  30. }

自定义的ListView的使用
 步骤:自定义适配器适配类型-为每一个子项制定自定义布局(item——layout)-创建自定义的适配器,将每一个子项的内容指定给布局控件-
 -获得listview 的实例以及一个容纳所有子项的list实例和适配器实例-把适配器传入布局
例如一个水果自定义listview

  1. public class Fruit(){
  2. private String name;
  3. private int ImageId;
  4. public Fruit(String name,int ImageId){
  5. this.name=name;
  6. this.ImageId=ImageId;
  7. }
  8. public String getName(){
  9. return name;
  10. }
  11. public int ImageId(){
  12. return ImageId;
  13. }
  14. }
  15. fruit_item.xml
  16. ...
  17. <ImageView
  18. .../>
  19. <TextView
  20. .../>
  21. ...
  22. public class FruitAdapter extends ArrrayAdapter(Fruit){
  23. private int resourceId;
  24. public FruitAdapter(Context context,int textViewResourceId,List<Fruit>objects){
  25. super(context,textViewResourceId,objects);
  26. resourceId=textViewResourceId;
  27. }
  28. public View getView(int position,View convertView,ViewGroup parent){
  29. Fruit fruit=getItem(position);
  30. View view=LayoutInflater.from(getContext()).inflate(resourceId,null);
  31. ImageView fruitImage=(ImageView) view.findViewById(R.id.fruit_image);
  32. TextView fruitName=(TextView) view.findViewById(R.id.fruit_name);
  33. fruitImage.setImageResource(fruit.getImageId());
  34. fruiName.setText(fruit.getName());
  35. return view;
  36. }
  37.  
  38. }
  39. mainactivity
  40. ....

gridview的使用
几个属性:
android:numColumns="auto_fit" --------列数设置为自动
android:columnWidth="90dp",----------每列的宽度,也就是Item的宽度
android:stretchMode="columnWidth"------缩放与列宽大小同步
android:verticalSpacing="10dp"----------垂直边距
android:horizontalSpacing="10dp"-------水平边距

  1. public void mainactivity extends Activity{
  2. private GridView gv;
  3. private List<Map<String,Objects>> data_list=new ArrayList<Map<String,Objects>>();
  4. private SimpleAdapter<map<String,Objects>> adapter;
  5. private int[] image={R.id...,.....,......};
  6. private String[] name={.....};
  7. public void onCreate(Bundle savedInstanceState){
  8. super.(savedInstanceState);
  9. setContentView(R.layout.test);
  10. gv=(GridView)findViewById(R.id.gridview);
  11. getdata();
  12. String[] from={"image","text"};
  13. int[] to={R.id.image,R.id.text};
  14. adapter=new SimpleAdapter<map<String,Objects>>(mainactivity.this,data_list.R.layout.item,from,to);
  15. gv.setAdapter(adapter);
  16.  
  17. }
  18. public List<Map<String,Objects>> getdata(){
  19. for(int i=;i<image.length;i++){
  20. Map<String,objects> map=new HashMap<String,Objects>();
  21. map.put("image",image[i]);
  22. map.put("text",name[i]);
  23. data_list.add(map);
  24. }
  25. return data_list;
  26. }
  27. }

补充关于hashmap:
这里使用hashmap就相当于在自定义的listview中的自定义泛型 fruit目的都是为了能够容纳一对对的数据集合
  Map<String, Object> map = new HashMap<String, Object>();
            map.put("image", icon[i]);
            map.put("text", iconName[i]);
            data_list.add(map);此处的map就是一对数据的集合

android ListView 与GridView 学习总结(五)的更多相关文章

  1. Android listview和gridview以及view的区别

    GridView 可以指定显示的条目的列数. listview一般显示的条目的列数都是一列 如果是列表(单列多行形式)的使用ListView,如果是多行多列网状形式的优先使用GridView andr ...

  2. android listView嵌套gridview的使用心得

    在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中, 不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动 ...

  3. android Listview,gridview局部刷新,部分刷新

    众所周知Listview和Gridview的刷新界面的方式是调用adapter.notifyDataSetChanged()进行界面刷新. 但是此方法有其弊端,他是将界面中的数据全部刷新一遍,不论数据 ...

  4. [Android]ListView & ViewPager & GridView 常见问题解决方法

    1. ViewPager左右滚动到两边时的渐变色,若想禁止,可以在布局文件中配置:android:overScrollMode="never" 2. ListView,GridVi ...

  5. 转 android Listview,gridview局部刷新,部分刷新 (仿QQ动态评论局部刷新)

    转自:http://blog.csdn.net/jdsjlzx/article/details/45582719 众所周知Listview和Gridview的刷新界面的方式是调用adapter.not ...

  6. android ListView 中getview学习总结

    最近在做android相关的开发,ListView中有一个图片错位的问题,今天查了很多人写的一些东西,所以记录下来,算是一种加深理解吧. ListView是一个非常常用的控件,功能可以扩展的很丰富,而 ...

  7. android ListView和GridView拖拽移位具体实现及拓展

    关于ListView拖拽移动位置,想必大家并不陌生,比较不错的软件都用到如此功能了.如:搜狐,网易,百度等,但是相比来说还是百度的用户体验较好,不偏心了,下面看几个示例:              首 ...

  8. android ListView和GridView拖拽移位实现代码

    关于ListView拖拽移动位置,想必大家并不陌生,比较不错的软件都用到如此功能了.如:搜狐,网易,百度等,但是相比来说还是百度的用户体验较好,不偏心了,下面看几个示例:             首先 ...

  9. android ListView嵌套GridView显示不全问题

    只需重写GridView即可:public class MyGridView extends GridView{ public MyGridView(android.content.Context c ...

随机推荐

  1. Hashtable(哈希表)

    简体字繁体字转化: class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ; i < ...

  2. javaSE练习13——(知识点:类的继承 方法的覆盖)

    设计2个类,要求如下: (知识点:类的继承 方法的覆盖)1.定义一个汽车类Vehicle, 1.1 属性包括:汽车品牌brand(String类型).颜色color(String类型 )和速度spee ...

  3. Java日志框架解析及实战分析

    转载自: https://zhuanlan.zhihu.com/p/24272450 https://zhuanlan.zhihu.com/p/24275518 作为Java程序员,幸运的是,Java ...

  4. css display:table圣杯布局

    圣杯布局指的是一个网页由页眉,3等高列(2个固定侧栏和中心内容主体)和贴在页面底部的页脚组成. 主要思路是对整个容器使用地上diaplay:table 的css规则,然后分别对页眉页脚使用displa ...

  5. 什么是SQL注入?什么是XSS攻击?什么是CSRF攻击?

    1. XSS(Cross Site Script,跨站脚本攻击) 是向网页中注入恶意脚本在用户浏览网页时在用户浏览器中执行恶意脚本的攻击方式. 1.1跨站脚本攻击分有两种形式: 反射型攻击(诱使用户点 ...

  6. Sharepoint 2013企业内容管理学习笔记(一) 半自动化内容管理

    大家好,今天我来与大家分享一个关于sharepoint2013文档管理方面的一个知识,我相信也许早就有人了解并熟知这项技术了,呵呵,众所周知,sharepoint 有一个很亮的功能,什么?没错,就是文 ...

  7. Java的输入/输出操作

    Java的输入\输出机制 计算机的基本功能就是通过输入输出设备与外部其他设备尽心数据的交互,从其他设备读入数据叫做输入操作,将计算机内的数据写入到其他设备叫做输出操作.可以向计算机发送数据.又可以接受 ...

  8. android 调试卡在:Waiting for Debugger - Application XXX is waiting for the debugger to Attach" 解决方法

    解决方法:重启adb. 步骤:cmd进入命令行,进入adb所在目录先后执行adb kill-server,adb start-server.

  9. HTML 5入门知识(二)

    使用HTML 5结构标签 <article> <article>标签可以在网页中定义独立的内容,包括文章.博客和用户评论等.一个article元素通常有它自己的标题,一般放在一 ...

  10. Matlab GUI保存图片

    % --- Executes on button press in pushbutton5. function pushbutton5_Callback(hObject, eventdata, han ...