• 3.17学习总结.listview用法总结


      今天复习了listview控件的用法。

    1.activity_main.xml 中的代码,如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingTop="10dp"
        android:paddingLeft="10dp"
        tools:context=".MainActivity">
    
        <ListView
            android:id="@+id/lv_1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"/>
    
    </LinearLayout>

    2. 接下来修改 MainActivity 中的代码,如下:

    public class MainActivity extends AppCompatActivity {
        private ListView mlist;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mlist=(ListView)findViewById(R.id.lv_1);
            mlist.setAdapter(new adapter(MainActivity.this));
        }
    }

    3.adapter代码

    (我的理解adapter相当于一个中转站,在被调用的时候将接收到的东西依次送到调用方)

    public class adapter extends BaseAdapter {
    
        private Context mContext;
        private LayoutInflater mLayoutInflater;
        public adapter(Context context){
            this.mContext=context;
            mLayoutInflater=LayoutInflater.from(context);
        }
        @Override
        public int getCount() {
            return 10;
        }
    
        @Override
        public Object getItem(int position) {
            return null;
        }
    
        @Override
        public long getItemId(int position) {
            return 0;
        }
    
         class ViewHolder{
            public TextView tv_1;
            public TextView tv_2;
            public TextView tv_3;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder=null;
            if (convertView==null){
                convertView=mLayoutInflater.inflate(R.layout.list_item,null);
                holder=new ViewHolder();
                holder.tv_1=convertView.findViewById(R.id.tv_name);
                holder.tv_2=convertView.findViewById(R.id.tv_temp);
                holder.tv_3=convertView.findViewById(R.id.tv_place);
    
                convertView.setTag(holder);
            }else{
                holder= (ViewHolder) convertView.getTag();
            }
            //给控件赋值
            holder.tv_1.setText("姓名"+"小明");
            holder.tv_2.setText("体温"+"36.2");
            holder.tv_3.setText("地址"+"中国");
    
            return convertView;
        }
    }

    数组中的数据实是无法直接传递给 ListView 的,我们还需要借助适配器来完成。 Android中提供了很多适配器的实现类,此处用 ArrayAdapter适配器。它可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入。ArrayAdapter 有多个构造函数的重载,根据实际情况来选择合适的一种。

    这里我们提供的数据都是字符串,因此将ArrayAdapter 的泛型指定为 String,然后在 ArrayAdapter 的构造函数中依次 传入 上下文、ListView 子项布局的 id,以及要适配的数据。注意:我们使用了 android.R.layout.list_item作为 ListView 子项布局的 id,这是一个Android 内置的布局文件,里面只有一个 TextView ,可用于简单地显示一段文本。这样适配器就构建好了。

    最后调用 ListView 的 setAdapter() 方法,将构建好的适配器对象传递进去,这样ListView 和数据之间的关联就建立好了。
    list_item代码:

    <?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:orientation="horizontal">
        <TextView
            android:id="@+id/tv_name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:layout_weight="1"
            android:text="姓名:" />
    
        <TextView
            android:id="@+id/tv_temp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="体温" />
        <TextView
            android:id="@+id/tv_place"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="所在地" />
    </LinearLayout>
  • 相关阅读:
    【PL/SQL练习】显式游标
    【PL/SQL练习】控制结构
    【PL/SQL练习】游标cursor :oracle 在执行sql语句时,为sql语句所分配的一个私有的内存区域
    【PL/SQL练习】DML语句的处理(可以处理多行数据)
    【PL/SQL练习】复合变量: 可以一次传递多个值到变量中。
    【PL/SQL练习】基本的PL/SQL语句
    【小错误】监听
    【考试】用户管理
    【考试】简单的sql语句
    织梦自定义表单地区联动类型不可用的解决办法
  • 原文地址:https://www.cnblogs.com/1305536110-dym/p/14552790.html
Copyright © 2020-2023  润新知