专栏首页陶士涵的菜地[android] 采用layoutInflater打气筒创建一个view对象

[android] 采用layoutInflater打气筒创建一个view对象

上一节知道了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>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [android] 界面的划分

    陶士涵
  • [android] 短信发送器

    /*****************2016年4月23日 更新********************************/

    陶士涵
  • [android] 练习viewpagerindicator的使用(一)

    陶士涵
  • 美团点餐—listview内部按钮点击事件

    这里面有一个类Item,就是一个实体类,里面只有name和num,和setget方法。具体看注释

    cMusketeer
  • Android开发(3) 可滚动的录入表单演示

    实现这样的布局一定要用到RelativeLayout 相对布局,我们这样指定我的布局。

    zhangyunfeiVir
  • Android开发工程师文集-相关控件的讲解,五大布局

    大家好,我是 Vic,今天给大家带来Android开发工程师文集-相关控件的讲解,五大布局的概述,希望你们喜欢

    达达前端
  • ProgressBar、RatingBar和Spinner控件

    1、ProgressBar、SeekBar与RatingBar控件 ProgressBar控件,也就是我们通常的进度条控件,可以显示加载的进度等。SeekBar...

    水击三千
  • 学习|Android侧滑框架SmartSwipe使用

    前两天看到一篇文章介绍了一些开源框架,其中无意间看到了这个SmartSwipe的侧滑框架,根据上面的介绍及演示的动态效果,使用起来确实很不错,于是自己做了个De...

    Vaccae
  • RadioButton、CheckBox与ToggleButton

    1.RadioButton RadioButton被称作为单选框,通常都是以组的形式出现,可以在一组控件中选择一个。 RadioButton的使用首先需要加入<...

    水击三千
  • 11.webview、shareSDK

    六月的雨

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动