Android学习笔记——ListView

来源:互联网 发布:java jdbc连接池使用 编辑:程序博客网 时间:2024/06/05 17:28

ListView

作用:android系统中显示列表的控件

【数据适配器】作用:把复杂的数据填充在指定的视图界面,是连接数据源和视图界面的桥梁

             分类:1.ArrayAdapter数组适配器:绑定格式单一的数据。数据源可以是集合或数组

                         2.SimpleAdapter简单适配器:用于绑定格式复杂的数据。数据源只能是特定泛型的集合

 

【实现过程:】新建适配器à添加数据源到适配器à视图加载适配器

________________________实践ArrayAdapter_____________________________

1.声明ListView,ArrayAdapter,SimpleAdapter。初始化listview控件

2.新建适配器。

     arr_adapter= new ArrayAdapter<String>(context,textViewResourceId,objects)

     ---context:上下文   this

     ---textViewResourceId:当前ListView加载的每一个列表项所对应的布局文件

     ---objects:数据源,要新建一个数组类型的数据块

3.添加数据源到适配器。

     数据源String[]arr_data={“aaa”,”bbb”,”ccc”,”ddd”};

则有:arr_adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr_data);

4.视图加载适配器。listView.setAdapter(arr_adapter);

________________________实践SimpleAdapter____________________________

2.新建适配器。

声明数据源Map: private List<Map<String,Object>> dataList;

simp_adapter=newSimpleAdapter(context,data,resource,from,to)

   ---context:上下文

   ---data:数据源(List<?extends Map<String,?>>data)一个Map所组成的List集合

                     每一个Map都会去对应ListView列表中的一行

                     每一个Map(键-值对)中的键必须包含所有在from中所指定的键

   ---resource:列表项的布局文件ID

   ---from:记录Map中的键名

   ---to:绑定数据视图中的ID,与from对应

3.添加数据源到适配器。

数据源data:dataList = new ArrayList<Map<String,Object>>();

则有:simp_adapter=new SimpleAdapter(this,getData(),R.layout.item,newString[]{“pic”,”text1”,”text2”},new int[]{R.id.pic,R.id.text1,R.id.text2})

                       //pic,text1,text2是item.xml布局文件中的3个控件

写getData()方法:

private List<Map<String,Object>> getData(){

  for(int i=0;i<20;i++)//创建20条map(listview的一行)

     {Map<String,Object>map=newHashMap<String,Object>();

      map.put(“pic”,R.drawable.ic_launcher);

      map.put(“text1”,”Head_list”+i);//列表上要显示的文字

      map.put(“text2”,”Little_list”+i);

      datalist.add(map);

    }return datalist;

}

4.视图加载适配器。listView.setAdapter(simp_adapter);

 

监听ListView列表项点击事件

两种接口:ItemClickListener,ScrollListener

一:ItemClickListener监听单一事件

1.Activity继承两个接口:接口Activityimplements AdapterView.OnItemClickListener,AbsListView.OnScrollListener

记得写对应接口的实现方法:public void onItemClick(AdapterView<?> parent,Viewview,int position,long id){

    }

    public voidonScrollStateChanged(AbsListView view,int ScrollState){

}

public void onScroll(AbsListView view,intfirstVisibleItem,int visibleItemCount,int totalItemCount){

}

2.给listView设置两种监听器:listView.setOnItemClickListener(this),listView.setOnScrollListener(this)

3. public void onItemClick(AdapterView<?>parent,View view,int position,long id){

                    String text =listView.getItemAtPosition(position)+””;

                    Toast.makeText(this,”position=”+position+” text=”+text,Toast.LENGTH_SHORT).show();//点击一条list,以toast打印出提示信息

}

二:ScrollListener监听滚动事件

滚动事件的3种状态(int类型):1.SCROLL_STATE_FLING手指离开屏幕前用力滑动一下,视图由于惯性继续滑动

                                                      2.SCROLL_STATE_IDLE视图已经停止滑动

                                                      3.SCROLL_STATE_TOUCH_SCROLL手指没离开屏幕,视图正在滑动

将3种状态以switch case的形式写入onScrollStateChanged()

**下拉刷新:用力滑动之后刷新,增加新的信息。在SCROLL_STATE_FLING后追加Map<String,Object>map=new HashMap<String,Object>();

       map.put(“pic”,”R.drawable.ic_launcher”);

       map.put(“text1”,”增加项”);

       dataList.add(map);

      simple_adapter.notifyDataSetChanged();//重新通知刷新主界面,动态更新视图中所包含的数据


0 0