当前位置: 首页 > news >正文

档案室建设网站鸿蒙系统软件开发教程

档案室建设网站,鸿蒙系统软件开发教程,网站代码怎么做,有创意的广告公司名称2019独角兽企业重金招聘Python工程师标准 ListView中比较简单但又非常方便的ArrayAdapter。 ArrayAdapter是BaseAdapter的派生类#xff0c;在BaseAdapter的基础上#xff0c;添加了一项重大的功能:可以直接使用泛型构造。 先来看一个简单的例子: Overrideprot… 2019独角兽企业重金招聘Python工程师标准 ListView中比较简单但又非常方便的ArrayAdapter。     ArrayAdapter是BaseAdapter的派生类在BaseAdapter的基础上添加了一项重大的功能:可以直接使用泛型构造。 先来看一个简单的例子: Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView listView  (ListView) this.findViewById(R.id.list);UserAdapter adapter  new UserAdapter(this, R.layout.list_item);adapter.add(new User(10, 小智, 男));adapter.add(new User(10, 小霞, 女));listView.setAdapter(adapter);}Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}class UserAdapter extends ArrayAdapterUser {private int mResourceId;public UserAdapter(Context context, int textViewResourceId) {super(context, textViewResourceId);this.mResourceId  textViewResourceId;}Overridepublic View getView(int position, View convertView, ViewGroup parent) {User user  getItem(position);LayoutInflater inflater  getLayoutInflater();View view  inflater.inflate(mResourceId, null);TextView nameText  (TextView) view.findViewById(R.id.name);TextView ageText  (TextView) view.findViewById(R.id.age);TextView sexText  (TextView) view.findViewById(R.id.sex);nameText.setText(user.getName());ageText.setText(user.getAge());sexText.setText(user.getSex());return view;}}class User {private int mAge;private String mName;private String mSex;public User(int age, String name, String sex) {this.mAge  age;this.mName  name;this.mSex  sex;}public String getName() {return this.mName;}public String getAge() {return this.mAge  ;}public String getSex() {return this.mSex;}} 这里自定义了一个ArrayAdapter有关于Adapter的使用在之前的SimpleAdapter中已经涉及到了所以这里直接就是以自定义的ArrayAdapter作为例子。     我们这里需要将学生的信息罗列出来需要三个TextView: ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical TextViewandroid:idid/nameandroid:layout_widthwrap_contentandroid:layout_heightwrap_content /TextViewandroid:idid/ageandroid:layout_widthwrap_contentandroid:layout_heightwrap_content /TextViewandroid:idid/sexandroid:layout_widthwrap_contentandroid:layout_heightwrap_content //LinearLayout 在自定义ArrayAdapter的时候最神奇的地方就是我们可以指定ArrayAdapter绑定的数据类型可以是基本数据类型也可以是自定义的对象类型像是这次的User类型。对于自定义的ArrayAdapter的构造方法存在很多形式这次是传进一个View的资源Id,但是我们也可以指定绑定的数据类型。     ArrayAdapter的神奇之处就是我们竟然可以像是操作Array一样来操作ArrayAdapter像是例子中的添加操作而其他的适配器都是需要传进一个容器的。ArrayAdapter为什么可以处理对象类型的数据呢其实ArrayAdapter是使用数组中对象的toString()方法来填充指定的TextView所以我们可以通过重写对象的toString()方法来自定义ListView的显示。 Overridepublic View getView(int position, View convertView, ViewGroup parent) {User user  getItem(position);LayoutInflater inflater  getLayoutInflater();View view  inflater.inflate(mResourceId, null);TextView text  (TextView) view.findViewById(R.id.info);text.setText(user.toString());return view;}class User {private int mAge;private String mName;private String mSex;public User(int age, String name, String sex) {this.mAge  age;this.mName  name;this.mSex  sex;}Overridepublic String toString() {return 姓名:  mName     年龄:  mAge     性别:  mSex;}}  这样我们可以只在一行中显示所有数据。 使用ArrayAdapter最大的疑问就是我们是否需要将一个现成的容器传入ArrayAdapter中原本ArrayAdapter本身就用一般容器的基本操作像是添加新的元素等但它本身并不能完成当成容器使用我们更多的时候是要将一个容器中的元素交给ArrayAdapter由后者决定它的显示形式。 class UserAdapter extends ArrayAdapterUser {private int mResourceId;public UserAdapter(Context context, int textViewResourceId,ListUser users) {super(context, textViewResourceId, users);this.mResourceId  textViewResourceId;}Overridepublic View getView(int position, View convertView, ViewGroup parent) {User user  getItem(position);LayoutInflater inflater  getLayoutInflater();View view  inflater.inflate(mResourceId, null);TextView text  (TextView) view.findViewById(R.id.info);text.setText(user.toString());return view;}} ListUser users  new ArrayListUser(); users.add(new User(10, 小智, 男)); users.add(new User(10, 小霞, 女)); UserAdapter adapter  new UserAdapter(this, R.layout.list_item, users); listView.setAdapter(adapter); 如果我们将ArrayAdapter绑定的数据类型定义为Object我们可以自由的传入任何类型的容器而不需要任何有关类型转换的操作!        ArrayAdapter不仅仅是可以显示TextView它当让也像是其他Adapter一样可以显示任何其他非TextView的组件: Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView listView  (ListView) this.findViewById(R.id.list);ListObject users  new ArrayListObject();users.add(10);users.add(11);UserAdapter adapter  new UserAdapter(this, R.layout.list_item,R.id.info, users);listView.setAdapter(adapter);}Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}class UserAdapter extends ArrayAdapterObject {private int mResourceId;public UserAdapter(Context context, int resourceId,int textViewResourceId, ListObject users) {super(context, resourceId, textViewResourceId, users);this.mResourceId  resourceId;}Overridepublic View getView(int position, View convertView, ViewGroup parent) {Object user  getItem(position);LayoutInflater inflater  getLayoutInflater();View view  inflater.inflate(mResourceId, null);TextView text  (TextView) view.findViewById(R.id.info);text.setText(user.toString());return view;}} ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text点击 /TextViewandroid:idid/infoandroid:layout_widthwrap_contentandroid:layout_heightwrap_content //LinearLayout 如果我们的布局中需要其他组件必须指定该布局中用于显示ArrayAdapter中数据的TextView的Id。      如果只是方便绑定数据的话其实是没有必要专门独立个ArrayAdapter出来只要覆写getView()就可以正如使用容器就是为了方便大量数据的处理一样的道理使用ArrayAdapter也是为了处理数据较大的情况像是超过100条或者频繁动态增删数据时就可以使用ArrayAdapter而且为了方便我们刷新UIArrayAdapter也提供了setNotifyOnChange()方法这样可以降低UI的处理量使得刷新UI更加快速主要是通过停止对add,insert,remove和clear的操作来实现这点。 转载于:https://my.oschina.net/kutengshe/blog/472585
http://www.yutouwan.com/news/83584/

相关文章:

  • wordpress站内优化网站域名申请流程
  • 创意网站模板下载wordpress编辑媒体永久链接
  • 坦洲网站建设投资公司经营范围
  • 长沙专业的建站按效果付费wordpress后台编辑主题时提示:抱歉_该文件无法被编辑
  • 南通设计网站建设想要学做网站
  • 福州营销网站建设技术产品开发项目管理全流程
  • 谁会在阿里云建网站M97 网站建设网络公司整站源码
  • 网站建设开发感悟做破解网站合法
  • 河南省住房城乡和建设厅网站南通市城乡和住房建设局网站
  • 赞叹天河网站建设公司重庆工程建设标准化信息网
  • 网站建设合同规范室内设计师的网站
  • 织梦网站后台空白怎么建设境外网站
  • 东营市两学一做考试网站网站前端工程师
  • asp网站镜像代码wordpress+手册主题
  • 企业建设网站作用wordpress主题雪人yeti1.9.2
  • 我是做网站怎么赚钱吗福建宏盛建设集团网站
  • 直接进网站的浏览器打开wordpress短链识别
  • 滁州网站开发建立网站的流程的合理顺序
  • 国美在线网站建设seo发展现状
  • 狼雨seo网站排名查询wordpress 清理插件
  • 知名的网页制作公司推荐国外seo综合查询
  • 网站名字备案WordPress重新安装删除哪个
  • 个人开网站佛山网站建设拓客科技
  • 网站如何做外链2018电影网站建设的意义
  • 江苏做网站的公司哪家做网站
  • 保定市城乡规划建设局网站番禺建设网站专家
  • 青岛网站推广企业网站架构模板
  • 阿里云做网站买什么软件卖手表的网站
  • 买个网站域名要多少钱一年光泽网站建设wzjseo
  • 北京sem网站电商的推广方式