ListView的用法
来源:互联网 发布:全球宏观经济数据 编辑:程序博客网 时间:2024/05/21 20:30
ListeView
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
1.ArrayAdapter(详细地址:http://www.cnblogs.com/wenjiang/p/3196205.html)
ArrayAdapter最为简单,只能展示一行字。默认情况下,ArrayAdapter绑定每个对象的toString值到layout中预先定义的TextView控件上。ArrayAdapter的使用非常简单。1.在xml文件中添加ListView控件;2.在mainActivity中初始化ListView;3.使用ArrayAdapter(Context context, int textViewResourceId, List<T> objects)来装配数据(ArrayAdapter的构造需要三个元素(this,布局文件,数据));4.绑定ArrayAdapter;5.添加布局
public class MainActivity extends ActionBarActivity { //声明一个listView private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //创建一个一个list对象 listView = new ListView(this); //使用ArrayAdapter(Context context, int textViewResourceId, List<T> objects)来装配数据 //ArrayAdapter的构造需要三个元素(this,布局文件,数据) ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,getDate()); //绑定ArrayAdapter listView.setAdapter(arrayAdapter); //执行布局 setContentView(listView); } //getDete方法得到ListView内容 private List<String> getDate(){ List<String> date = new ArrayList<String>(); date.add("1"); date.add("2"); date.add("3"); date.add("4"); date.add("5"); returndate; }}
2.SimpleAdapter
SimpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等等。下面的代码都直接继承了ListActivity,ListActivity和普通的Activity没有太大的差别,不同就是对显示ListView做了许多优化,方面显示而已。1.根据需要定义ListView每行所实现的布局2.定义一个HashMap构成的列表,将数据以键值对的方式存放在里3.构造SimpleAdapter对象。4.将LsitView绑定到SimpleAdapter上。
3.MyAdapter继承BaseAdapter
在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作。也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点。SimpleAdapter添加一个按钮到ListView的条目中,会发现可以添加,但是却无法获得焦点,点击操作被ListView的Item所覆盖。这时候最方便的方法就是使用灵活的适配器BaseAdapter了。
备注:使用BaseAdapter必须写一个类继承它,同时BaseAdapter是一个抽象类,继承它必须实现它的方法。
1.创建list<Map<String,Object>>2.用hashmap 存放数据,添加到list内3.创建MyAdapter类继承BaseAdapter类,并实现父类方法;其中首先调用getCount()方法,得到它的返回值,即ListView的长度。然后系统调用getView()方法,根据这个长度逐一绘制ListView的每一行。(也就是说,如果让getCount()返回1,那么只显示一行。)4.创建ViewHolder类;方便提取
package com.example.sqiist;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.content.Context;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends ActionBarActivity { //声明一个listView private List<Map<String,Object>> list; //声明一个String数组 private String [] number={"1","2","3","4","5"}; @Override protected void onCreate(Bundle savedInstanceState) { //复写Oncreat方法 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//绑定布局文件 list = getDate();//得到数据 ListView listView = (ListView)findViewById(R.id.myListView); //获取控件 MyAdapter adapter = new MyAdapter(this);//创建对象 listView.setAdapter(adapter);//绑定对象 } //创建getDate方法得到listview里面的数据 private List<Map<String,Object>> getDate(){ List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); //for循环得到每个数据 for(int i = 0;i < number.length;i++){ HashMap<String,Object> map = new HashMap<String,Object>(); map.put("number", number[i]);//添加到Map里 list.add(map);//添加到List内 } //返回list return list; } //创建一个自定义MyAdapter继承BaseAdapter public class MyAdapter extends BaseAdapter{ //声明LayoutInflater用来寻找布局文件 private LayoutInflater mInflater; //构造函数初始化 public MyAdapter(Context context) { this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return list.size();//得到ListView长度 } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub ViewHolder holder = null;//创建对象 if(arg1==null){ holder=new ViewHolder();//创建对象 arg1 = mInflater.inflate(R.layout.activity_main, null); //找到布局文件 holder.myTextView = (TextView)findViewById(R.id.myTextView);//获取TextView控件 holder.myButton = (Button)findViewById(R.id.myButton);//获取Button控件 arg1.setTag(holder); }else{ holder = (ViewHolder)arg1.getTag(); } holder.myTextView.setText((String)list.get(arg0).get("number"));//赋值 //给Button创建监听事件,不做工 holder.myButton.setTag(arg0); holder.myButton.setText("点击"); holder.myButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub } }); return arg1; } } public final class ViewHolder{ public TextView myTextView; public Button myButton; }}
0 0
- ListView的用法(一)
- listview的用法
- listview的用法
- Delphi ListView的用法
- ListView的用法详解
- listview的简单用法
- ListView列表的用法
- listView的简单用法
- 关于ListView的用法
- listview的用法
- 举例说明ListView的用法
- ListView的用法
- ListView的用法
- listview的用法总结
- Android ListView的用法
- listview的用法
- C# ListView的用法
- C# ListView的用法
- 12个不为人知培养你潜意识的小习惯,会让你一天更有效率
- JPush,友盟,百度云,个推Push服务在送达率上的对比
- Java的Date类和Calendar类
- hdoj1024【DP.最 大 m 字 段 和】(写完我都怕。。。不忍直视。。)
- hdu_2546_饭卡(01背包)
- ListView的用法
- hdu 5179(bfs打表+二分)
- Linux下安装g++调试工具
- Free Ice Cream
- SDL_API
- 搜索引擎
- 最新Android WebView Websettings设置, Android WebView加载网页布局错乱, 在Android4.4新版本之后WebSettings新增设置。
- 字符串匹配--北航机试2008
- NodeJs--模块分类