安卓控件使用系列34:ListView列表控件显示表单的使用方法1
2015-10-04 12:02
567 查看
在安卓应用程序中经常会看到数据列表,那么我们怎么来实现这样的操作呢,下面我们将使用方法给大家分享一下。
安卓中共有三个列表控件:ListView、ExpandableListView、Spinner
使用ListView显示数据列表的时候用到MVC模式:为ListView提供数据的List或数组是M(模型,Model)、ListView是V(视图,View)用于显示数据、Adapter对象相当于C(控制器,Controller),Adapter是一个在LIstView和数据之间的一个桥梁。
MVC好处:MVC把应用程序的逻辑层和界面完全分开,界面设计人员直接参与界面开发,程序员把精力放在逻辑层开发,而不是程序员全权负责界面和逻辑层的开发。
视图层(View):使用xml文件进行界面的描述,使用的时候可以方便的引入。
控制层(Controller):指Activity,通过Activity交给Model业务逻辑层处理。Andriod中Activity的响应时间是5s,如果耗时的操作放在这里,程序就很容易回收掉。如获取网络上的数据比较耗时,不能在这里编写。
模型层(Model):对数据库的操作,对网络等的操作都应该放在Model里面处理。
ArrayAdapter类的其中一个常用的构造方法:ArrayAdapter(上下文对象,显示的样式,数据源),显示的样式是系统自带的layout中的一些样式。
ListView控件对单个选型进行监听的三个事件分别是:setOnItemClickListener(点击某个选项时触发的事件)、setOnItemLongClickListener(长按某个选项时触发的事件)、setOnItemSelectedListener(选择某个选项时触发的事件)。
android.R.layout中涉及到的ListView控件的样式有很多,比较常用的三种样式分别是:simple_list_item_1(没有任何其他格式的简单显示格式)、simple_list_item_single_choice(带有单选框的显示格式)、simple_list_item_multiple_choice(带有多选框的显示格式)。在适配器中对这个显示格式进行设置之后,对ListView控件使用setChoiceMode方法进行对应格式的设置才有效。
这个例子实现的是在页面显示数据列表,并可以实现多选,长按某一个选型会弹出信息。
整体思路:在xml文件中添加一个ListView控件,新建一个java类MyDataSource,在里面定义一个方法返回一个字符串类型的数组,在活动中定义一个适配器,定义一个数组用于获取MyDataSource类中返回的字符串数组,并把这个数组以复选框的格式绑定到这个适配器上,设置ListView控件的选择方式,将适配器绑定到ListView控件上,设置setOnItemLongClickListener这个事件(长按某个选项触发的事件),在这个事件中输出信息。这样就完成了数据列表的显示并可以多选、长按输出信息的效果。
activity_main.xml文件:
MyDataSource.java文件:
安卓中共有三个列表控件:ListView、ExpandableListView、Spinner
使用ListView显示数据列表的时候用到MVC模式:为ListView提供数据的List或数组是M(模型,Model)、ListView是V(视图,View)用于显示数据、Adapter对象相当于C(控制器,Controller),Adapter是一个在LIstView和数据之间的一个桥梁。
MVC好处:MVC把应用程序的逻辑层和界面完全分开,界面设计人员直接参与界面开发,程序员把精力放在逻辑层开发,而不是程序员全权负责界面和逻辑层的开发。
视图层(View):使用xml文件进行界面的描述,使用的时候可以方便的引入。
控制层(Controller):指Activity,通过Activity交给Model业务逻辑层处理。Andriod中Activity的响应时间是5s,如果耗时的操作放在这里,程序就很容易回收掉。如获取网络上的数据比较耗时,不能在这里编写。
模型层(Model):对数据库的操作,对网络等的操作都应该放在Model里面处理。
ArrayAdapter类的其中一个常用的构造方法:ArrayAdapter(上下文对象,显示的样式,数据源),显示的样式是系统自带的layout中的一些样式。
ListView控件对单个选型进行监听的三个事件分别是:setOnItemClickListener(点击某个选项时触发的事件)、setOnItemLongClickListener(长按某个选项时触发的事件)、setOnItemSelectedListener(选择某个选项时触发的事件)。
android.R.layout中涉及到的ListView控件的样式有很多,比较常用的三种样式分别是:simple_list_item_1(没有任何其他格式的简单显示格式)、simple_list_item_single_choice(带有单选框的显示格式)、simple_list_item_multiple_choice(带有多选框的显示格式)。在适配器中对这个显示格式进行设置之后,对ListView控件使用setChoiceMode方法进行对应格式的设置才有效。
这个例子实现的是在页面显示数据列表,并可以实现多选,长按某一个选型会弹出信息。
整体思路:在xml文件中添加一个ListView控件,新建一个java类MyDataSource,在里面定义一个方法返回一个字符串类型的数组,在活动中定义一个适配器,定义一个数组用于获取MyDataSource类中返回的字符串数组,并把这个数组以复选框的格式绑定到这个适配器上,设置ListView控件的选择方式,将适配器绑定到ListView控件上,设置setOnItemLongClickListener这个事件(长按某个选项触发的事件),在这个事件中输出信息。这样就完成了数据列表的显示并可以多选、长按输出信息的效果。
activity_main.xml文件:
<ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="fill_parent" ></ListView>MainActivity.java文件:
private ListView listView; private ArrayAdapter<String> adapter; private List<String> data=null;//数据源 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); data=MyDataSource.getDataSource();//给数据源赋值 //给适配器绑定数据源,并使用单选的样式 //adapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_single_choice,data); //多选的样式 adapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_multiple_choice,data); listView=(ListView)findViewById(R.id.listview); //给listview加一个单选的样式(给每一个选项添加单选操作) //listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); //多选的样式(添加了复选框的操作) listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); listView.setAdapter(adapter); listView.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "click me", 1).show(); return false; } }); }
MyDataSource.java文件:
public class MyDataSource { public MyDataSource() { // TODO Auto-generated constructor stub } public static List<String> getDataSource(){ List<String> list=new ArrayList<String>(); list.add("北京"); list.add("上海"); list.add("广州"); list.add("深圳"); list.add("杭州"); list.add("苏州"); return list; } }
相关文章推荐
- zeromq安装使用
- USACO 2.4 Cow Tours (Floyd最短路径 + DFS)
- windows xp 不支持Wap2加密方式
- A016-布局之RelativeLayout
- java代码实现JDBC连接MySql以及引用驱动程序包
- CC254X片上flash读写解析
- 黑马程序员——Java基础日记——面向对象
- HDU 2012 素性
- 在Xcode中的textField中输入中文
- Vijos[1028]魔族密码
- iOS讲解迷惑深入浅出之block那点事
- iOS开发 —— MVVM设计模式
- 常用几个结构体
- 有关sql server 2008无法导入数据库mdf文件的处理方法
- 输出编译器预处理器的中间文件
- 20135306黄韧 信息安全系统设计基础第三周学习总结
- hdu1754 I hate it线段树模板 区间最值查询
- LintCode "Binary Representation"
- hdu1754 I hate it线段树模板 区间最值查询
- 证券基础--股票发行方式