ListView

一,课程目标
1,理解ListView的基础使用
2,学会熟练运用两种适配器
(ArrayAdapter, SimpleAdapter)
3, 学会熟练运用两种监听器
(OnScrollListener, OnIntemClickListener)
4, 学会熟练运用适配器数据的刷新
(notifyDataChanged)

二,ListView
1,ListView的作用: android系统中显示列表的控件;
2,ListView 控件:每一个ListView都可以包含很多个列表项

三,数据适配器
数据适配器的作用:把复杂的数据(数组、链表、集合、数据库等)填充在指定视图界面上;
ArrayAdapter(数据适配器):用于绑定格式单一的数据
数据源:可以是集合或数组
SimpleAdapter(简单适配器):用于绑定格式复杂的数据
数据源:只能是特定泛型的集合

   数据适配器是连接数据源和视图界面的桥梁;

四,实例:
private ListView listView;
private ArrayAdapter arr_adapter;
private SimpleAdapter simp_adapter;

   listView =(ListView)findViewById(R.id.listview);
   //1,新建一个数据适配器
   ArrayAdapter(上下文,当前ListView加载的每一个列表所对应的布   局文件,数据源)
   系
   
  //2,适配器加载数据源
    String[] arr_data={"慕课网1","慕课网2","慕课网3","慕课网4"};
     arr_adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,arr_data);

   //3,视图(ListView)加载适配器
   listView.setAdapter(arr_adapter);



   SimpleAdapter(context,data,resource,from,to)
    context:上下文
    data:数据源
     数据源List> data  
    一个Map所组成的List集合
     每一个Map都会对应ListView中的一行
     每一个Map(键--值对)中的键必须包含所有在from中所指定的值

     resource:列表项的布局文件ID
     from:Map中的键名
     to:绑定数据视图中的ID,与from成对应关系

  四,监听器
       作用:android提供了很多事件监听器,监听器主要是为了响应某个动作,
                  这个动作可以是用户操作的,也可以是android系统本身发出的。
                  我们可以通过监控这个动作飞行为,来完成我们需要的程序功能;
         OnItemClickListener:
          可以处理视图中单个条目的点击事件;
         OnScrollListener:
           监听滚动的变化,可以用于视图在滚动中加载数据;
      
         监听器是程序和用户(或系统)交互的桥梁;

五,onItemClick(AdapterView parent ,View view, int position ,long id)详解
public void onItemClick (AdapterView parent, View view,int position,long id)

  • 假设有X, Y两个listview,

  • X里有1,2,3,4这4个item,

  • Y里有a,b,c,d这4个item。
    如果你点了b这个item。则有如下:

    public void onItemClick (AdapterView parent, View view,int position,long id)
    // parent相当于listview Y适配器的一个指针,可以通过它来获得Y里装着的一切东西,再通俗点就是说告诉你,你点的是Y,不是X
    View view,
    // view是你点b item的view的句柄,就是你可以用这个view,来获得b里的控件的id后操作控件
    int position,
    // position是b在Y适配器里的位置(生成listview时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listview里,
    意思就是这个b是第position号做好的)
    long id
    // id是b在listview Y里的第几行的位置(很明显是第2行),大部分时候position和id的值是一样的,

    • 如果需要的话,你可以自己加个log把position和id都弄出来在logcat里瞅瞅,看了之后心里才踏实)
      PS:需要注意区分position与long id的区别。position事实上就是ListView中被点击的view的位置,
      注意,在ListView中是不负责处理headerView和footViewer的,
      所以,这个位置position应该是这个被点击的view在数组[所有的headerView,用户添加的view,所有的footerView]中的位置,
      而id是来自于adapter.getItemId(position)。当用户添加了footView或者headView后可能会导致position和id的值不同。
      事实上,如果position指向了headerView或footerView,那么返回-1,否则,将返回在用户view数组的位置。
      也就是说id=position-headerView的个数(id < headerviewer的个数+用户view的个数),否则返回-1。

你可能感兴趣的:(ListView)