Android学习心得第三课
来源:互联网 发布:javascript动态效果图 编辑:程序博客网 时间:2024/06/10 18:46
今天学习了Android的一个重要的控件listview,最近的学习状态和前几天相比,下降的还是比较明显的,这里要给自己提一个醒,千里之行始于足下,后面一定要珍惜时间,戒骄戒躁。
下面来对listview进行一个总结,listview顾名思义是一个列表形式的控件,表现的形式如下图所示,这里采用的就是listview的形式来排列的。
要完成相应的视图可以用到两种适配器,分别是 ArrayAdapter 和SimpleAdapter这两种适配器,下面分别对这两种适配器进行讲解。
public class MainActivity extends Activity implements OnItemClickListener,OnScrollListener{ private ListView lv; private ArrayAdapter<String> arr_adapter; private SimpleAdapter simadapter; private List<Map<String, Object>>datalist; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.listView); //1、新建一个适配器 //2、ArrayAdapter的函数的第一个参数是上下文 //3、第二个参数是当前的listview的每一个列表项所对应的布局文件 //4、第三个参数是数据源 String[] arr_data={"慕课网1","慕课网2","慕课网3","慕课网4"}; arr_adapter = new ArrayAdapter<String> (this, android.R.layout.simple_list_item_1, arr_data); datalist = new ArrayList<Map<String,Object>>(); //加载适配器 lv.setAdapter(arr_adapter); } private List<Map<String, Object>> getData(){ for(int i=0;i<20;i++){ //在datalist中插入数据 Map<String, Object>map = new HashMap<String, Object>(); map.put("pic",R.drawable.ic_launcher); map.put("text", "CCNU"+i); datalist.add(map); } return datalist; }}
运用SimpleAdapter,代码如下:
public class MainActivity extends Activity implements OnItemClickListener,OnScrollListener{ private ListView lv; private ArrayAdapter<String> arr_adapter; private SimpleAdapter simadapter; private List<Map<String, Object>>datalist; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.listView); /* * SimpleAdapter解析 * 1、第一个参数是上下文 * 2、第二个参数是数据源,data的形式是List<? extends Map<String, ?>> data * data必须是一个map组成的list集合 * 每一个map代表的是listview列表中的每一行 * 每一个map(键-值)中的键必须包含所有在from中指定的键 * 3、第三个参数是列表项的布局文件ID * 4、from:map中的键名 * 5、to:绑定数据视图中的ID,与from成相对关系 */ datalist = new ArrayList<Map<String,Object>>(); simadapter = new SimpleAdapter(this, getData(), R.layout.main, new String[]{"pic","text"}, new int[]{R.id.pic,R.id.text}); //加载适配器 lv.setAdapter(simadapter); lv.setOnItemClickListener(this); lv.setOnScrollListener(this); } private List<Map<String, Object>> getData(){ for(int i=0;i<20;i++){ Map<String, Object>map = new HashMap<String, Object>(); map.put("pic",R.drawable.ic_launcher); map.put("text", "CCNU"+i); datalist.add(map); } return datalist; } public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case SCROLL_STATE_FLING: Log.i("main","手指在离开屏幕前,由于用力滑动了一下,导致视图仍旧依靠惯性滑动");//这里为了实现下拉刷新功能,用map将新的数据加入进去 Map<String, Object>map = new HashMap<String, Object>(); map.put("pic", R.drawable.ic_launcher); map.put("text", "增加项"); datalist.add(map);、//这句话非常的重要,因为仅仅用map将数据加入进去是无法再页面上进行显示的,因为map仅仅会 实现后台上数据的一个增加,要想让UI界面同时进行一个刷新,就必须借助于notifyDataSetChanged函数来实现UI界面上的一个更新 simadapter.notifyDataSetChanged(); break; case SCROLL_STATE_IDLE: Log.i("main", "视图停止滑动"); case SCROLL_STATE_TOUCH_SCROLL: Log.i("main", "手指没有离开屏幕,视图正在滑动"); break; } } public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String text = lv.getItemAtPosition(position)+""; Toast.makeText(this,"position="+position+"text="+text,Toast.LENGTH_SHORT).show(); }}
最后在这里要特别提醒一下,我在编写程序犯了一个非常愚蠢的错误,setContentView(R.layout.activity_main)这句话被我写成了setContentView(R.layout.main);,main这个xml是我写的listview里面每一行的样式,而activity_main是包含listview的整个页面的布局,必须从这个页面启动,才能实现相应的效果。 simadapter = new SimpleAdapter(this, getData(), R.layout.main, new String[]{“pic”,”text”}, new int[]{R.id.pic,R.id.text});这句里面的R.layout.main这个参数就是告诉适配器listview里面的每一行的样式是用该main.xml下的样式。
0 0
- Android学习心得第三课
- Android Window PhoneWindow Activity学习心得--第三弹
- Android学习心得第一课
- Android学习心得第二课
- Android学习心得第四课
- Android学习心得第五课
- Android学习心得
- android 学习心得
- android学习心得
- Android 学习心得
- Android学习心得
- Android学习心得
- android 学习心得
- android学习心得
- android 学习心得
- 学习心得:第三章,继承总结
- 《windows程序设计》第三章学习心得
- 《剑指offer》学习心得第三日
- 数据挖掘与技术:通过规范化变换数据
- JavaFx Notes
- V4L2应用程序框架
- 详解css3中webkit-animation
- 各种简单的困难的模板,持续更新
- Android学习心得第三课
- 矩阵的转置 C语言
- python装饰器的学习笔记三
- Dll注入经典方法完整版
- 本文作者对iOS开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总。一方面,能够帮助HR在短时间内获取更多反馈信息,以甄选合适人选,而开发者及设计师在寻找相关工作时,也可作为参考,为面试做好万全准
- spring 学习小结5_spel
- 事件的由来
- 给出两个字符串,找到最长公共子串,并返回其长度,java实现
- 4. smarty 变量操作