[android] 采用layoutInflater打气筒创建一个view对象
2023-02-18 15:47:14 时间
上一节知道了ListView的工作原理,数据也展示出来了,但是TextView显示的非常难看,如果想美化一下,就先创建好一个布局出来,这个布局采用了两层LinearLayout嵌套,外层的水平方向,内层的竖直方向,android:gravity=”center_vertical”内容竖直居中,android:layout_marginLeft左边距,android:textColor=”#55000000”前两个是透明度等。
在上一节的adapter实现类中,getView()方法中,想办法把xml文件转成可以显示的View对象,调用View类的inflate(context,resuorce,root)方法,context上下文,内部类调用外部类Activity的对象MainActivity.this,resource资源例如R.layout.list,root是想把这个View对象填充进去的父容器,我们这里只需返回这个对象,不用填充到父容器,写上null,这时候拿到了转换后的View对象
修改拿到的View对象里面控件的展示信息,调用View对象的findViewById()方法,找到对应的控件,调用TextView对象的setText()设置信息,在调用setText()方法的时候,如果传入的是个int类型会报错ResuorceNotFound,因为这个api可以传入String资源id,资源id是int的,因此会误以为资源id,报找不到资源,所以setText()int的时候一定要转一下
activity:
@Override public View getView(int position, View convertView, ViewGroup parent) { Person person=persons.get(position); View list=View.inflate(MainActivity.this, R.layout.list_item, null); TextView tv_id=(TextView) list.findViewById(R.id.tv_id); TextView tv_name=(TextView) list.findViewById(R.id.tv_name); TextView tv_account=(TextView) list.findViewById(R.id.tv_account); tv_id.setText("id:"+person.getId()); tv_name.setText("姓名:"+person.getName()); tv_account.setText("金额"+person.getId()); return list; }
布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" > <TextView android:id="@+id/tv_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="ID" android:textColor="#ff0000" android:textSize="16sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:orientation="vertical" > <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名" android:textSize="16sp" /> <TextView android:id="@+id/tv_account" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="金额" android:textColor="#50000000" android:textSize="16sp" /> </LinearLayout> </LinearLayout>
相关文章
- java和vue学生定位打卡小程序人脸识别打卡系统源码网站学生考勤系统
- Java疫苗预约小程序线上疫苗预约系统
- 移动研发提效?小程序容器技术来帮忙!
- 微信小程序(一)自定义导航栏和fixed失效及各机型兼容问题
- 微信小程序(二)学妹问我微信小程序左滑删除怎么实现
- 微信小程序(三)实现类似Vue中的 computed,watch 功能
- 微信小程序(四)绝对不可错过切换自定义菜单栏的骚操作
- 一文说透小程序插件及其作用价值
- android learning
- 微信小程序HTTPS - cenos apache 下安装SSL证书
- 3小时!开发ChatGPT微信小程序
- iOS 裁包大作战 —— JOOX Music 如何瘦身40MB
- 只需4步!带你成功将小程序转为APP
- 设计师应该了解的iOS应用开发基础知识
- 小程序容器技术成为组装式应用基础
- 「Native+小程序」,App热更新技术最优解
- 混合式App开发背景下,「Native+小程序」成为最优解
- 不改一行代码,就可以将微信小程序转成商业App?
- 技术分享|如何运用FinClip轻松将微信小程序转成商业App
- R8在Android手Q中的应用