Android-ListView详解(SimpleAdapter,ArrayAdapter,BaseAdapter,OnItenClickListener,OnScrollListener)
来源:互联网 发布:橡皮砖淘宝店铺 编辑:程序博客网 时间:2024/06/04 19:12
1.回顾
上篇了解了 Androidmainfest.xml 的 作用
2.重点
(1)SimpleAdapter 简单适配器:数据为特定泛型集合;
(2)ArrayAdapter 数据为集合和数组 :用于绑定单一格式数据
(3)BaseAdapter 数据为 集合和数组
(4)OnItenClickListener Item点击事件
(5)OnScrollListener 滑动事件
3.SimpleAdapter
参数1:上下文对象 这里为this
参数2:数据集合 必须为 List<Map<String,String>> 类型的,每个Map<String,String> 为ListView的一行
参数3:ListView的每行的布局文件,自己自定义 ,添加一个list_mian 布局 ,如下所示
参数4:String [] 数组 为 每行里面 map对象的 key值
参数5:为刚刚list_main 的布局中的 控件id 和 参数4 对应,显示数据
List<Map<String, String>> maps=new ArrayList<Map<String,String>>(); for(int i=0;i<20;i++){ Map<String,String> map=new HashMap<String, String>(); map.put("yuan","温县"+i); map.put("ming","原明卓"+i); maps.add(map); } SimpleAdapter simpleAdapter=new SimpleAdapter(this,maps,R.layout.list_main,new String[]{"yuan","ming"},new int[]{R.id.textView1,R.id.textView2}); listview1.setAdapter(simpleAdapter);
list_main.xml 布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /></LinearLayout>
4. ArrayAdapter
参数1:上下文对象
参数2:可以是自己的布局,也可以使用安卓本身带有的布局
参数3:数据 ,这里是数组
String []arr={"yuan","ming","zhuo","yuanming","yuanzhuo","yuanzhuo","yuanzhuo","yuanzhuo","yuanzhuo"};ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, arr);listview1.setAdapter(arrayAdapter);
5.BaseAdapter
第一步:新建类继承 BaseAdapter ,重新里面的方法
第二步:使用构造函数传参(即数据)
第三部:在getView里进行布局操作(引入的布局为自定义的)
第四部:给Listview 设置 adapter
/** * 继承baseAdapter 准备适配给listview * @author yuan * */class MovieListAdapter extends BaseAdapter{List<shared> mlist=null;public MovieListAdapter(List<shared> list) {//初始化 List<shared> 列表this.mlist=list;}@Overridepublic int getCount() {return mlist.size();}@Overridepublic Object getItem(int position) {return mlist.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//初始化 控件convertView=View.inflate(getApplicationContext(), R.layout.list_item,null);ImageView imageView=(ImageView)convertView.findViewById(R.id.img_movie);TextView movie_name=(TextView)convertView.findViewById(R.id.movie_name);TextView movie_totol=(TextView)convertView.findViewById(R.id.movie_totol); //设置 背景为 灰色if(position%2==0){ convertView.setBackgroundColor(Color.GRAY);}//设置参数shared s=mlist.get(position);movie_name.setText(s.getName());movie_totol.setText(s.getTotol());//设置图片imageLoader_cache(imageView,s.getPic());return convertView; }//加载图片private void imageLoader_cache(ImageView imageView,String pic){//设置 图片缓存 :体现 imageLoader的优势 //使用 LruBitmap + ImageCache 实现 //实例化对象ImageLoader imageLoader=new ImageLoader(VolleyApplication.getQueue(),new VolleyBitmapCache());// 图片监听 (默认图片,错误图片) 和 imageViewImageListener imageListener=ImageLoader.getImageListener(imageView,R.drawable.ic_launcher,R.drawable.ic_launcher);//加载图片 后面可以设置 图片的大小缩放imageLoader.get(VolleyHttpPath.getBasicPath()+"/"+pic,imageListener,0,0);}}
将adapter 设置给 listview
//解析完毕 ,适配 listviewMovieListAdapter adapter=new MovieListAdapter(list);ove_list.setAdapter(adapter);
这里的实例在:点击打开这个实例
6.OnItenClickListener
通过listview对象 的 getItemAtPostion() 取得 Item 的值
/** * Item 点击事件 * @author yuan * */class ListItemOnClickListener implements OnItemClickListener{@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {//可以取得ListView 的 Item里的值 String str=listview1.getItemAtPosition(position).toString(); tv_frist.setText(str);}}
7.ListScrollListener
滑动可以监听到 滑动状态,从而进行 加载数据;
/** * 滑动监听 * @author yuan * */class ListScrollListener implements OnScrollListener{@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// 滑动状态测试switch (scrollState) {case SCROLL_STATE_FLING:tv_frist.setText("手指离开,还在滑动"); for(int i=20;i<40;i++){ Map<String,String> map=new HashMap<String, String>(); map.put("yuan","温县"+i); map.put("ming","原明卓"+i); maps.add(map); } //通知simpleAdapter 修改数据 simpleAdapter.notifyDataSetChanged();break; case SCROLL_STATE_IDLE: tv_frist.setText("停止滑动了");break; case SCROLL_STATE_TOUCH_SCROLL: tv_frist.setText("手指还在屏幕上,正在滑动");break;default: tv_frist.setText("不滑动了");break;}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {// 滑动}}
8.下拉刷新基本思路
(1)判断下拉刷新的状态
(2)显示底层布局和 滚动条
(3)加载显示数据
- Android-ListView详解(SimpleAdapter,ArrayAdapter,BaseAdapter,OnItenClickListener,OnScrollListener)
- listView、baseAdapter、arrayAdapter、simpleAdapter
- Android之ListView使用方法-ArrayAdapter-SimpleAdapter-BaseAdapter
- Android中SimpleAdapter,ArrayAdapter和BaseAdapter详解
- Android中SimpleAdapter,ArrayAdapter和BaseAdapter详解
- android中的适配器(ArrayAdapter,SimpleAdapter,BaseAdapter)
- android--(布局ListView、优化、刷新分页、ArrayAdapter、SimpleAdapter 、BaseAdapter)
- Android之ListView使用方法-ArrayAdapter-SimpleCursorAdapter-SimpleAdapter-BaseAdapter
- android---------ArrayAdapter、SimpleAdapter和BaseAdapter
- android-----ArrayAdapter、SimpleAdapter和BaseAdapter
- GridView && ArrayAdapter && SimpleAdapter && BaseAdapter【Android】
- android Adapter综合使用(ArrayAdapter、SimpleAdapter、BaseAdapter在ListView和GridView中的使用)
- ListView (3) 之适配器 ArrayAdapter/SimpleAdapter/BaseAdapter
- Android 常用Adapter(ArrayAdapter ,SimpleAdapter ,BaseAdapter )的具体用法
- android高级组件(3)适配器 ArrayAdapter,SimpleAdapter,BaseAdapter
- Android中SimpleAdapter,ArrayAdapter和BaseAdapter小记
- Android中ArrayAdapter、SimpleAdapter、BaseAdapter总结
- Android中SimpleAdapter,ArrayAdapter和BaseAdapter
- UVa:1611 Crane(贪心)
- oracle学习笔记——约束条件
- 二叉树三种遍历非递归实现
- Druid连接池三(学习笔记)
- Vim学习笔记3---命令辨析
- Android-ListView详解(SimpleAdapter,ArrayAdapter,BaseAdapter,OnItenClickListener,OnScrollListener)
- LeetCode_ZigZag Conversion_006
- linux ngingx一些操作
- greenDAO系列2--如何开始
- Druid连接池四(学习笔记)
- hdu 5418 Victor and World 最短路 floyd 解题报告
- 去哪网实习总结:JavaWeb中文传参乱码问题的解决(JavaWeb)
- [MFC学习笔记]--string类,路径层
- Linux内核工程导论——数据结构:树