今天复习了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>

3.17学习总结.listview用法总结的更多相关文章

  1. C# ListView用法详解 很完整

    一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设 ...

  2. Object C学习笔记22-#define 用法

    上一篇讲到了typedef 关键字的使用,可以参考文章 Object C 学习笔记--typedef用法 .而在c中还有另外一个很重要的关键字#define. 一. #define 简介 在C中利用预 ...

  3. Java EE学习--Quartz基本用法

    新浪博客完全不适合写技术类文章.本来是想找一个技术性的博客发发自己最近学的东西,发现博客园起源于咱江苏,一个非常质朴的网站,行,咱要养成好习惯,以后没事多总结总结经验吧.很多时候都在网上搜索别人的总结 ...

  4. ListView用法总结C#

    ListView是个较为复杂的控件     网上教程写的很乱,C#中文资料太匮乏了,小白叔叔觉得有必要自己出一份了. http://blog.sina.com.cn/s/blog_43eb83b901 ...

  5. C# ListView用法

    ListView是个较为复杂的控件       1.定义   把它拽进来,系统会自动在Designer.cs里添加一个  this.listView1 = new System.Windows.For ...

  6. JSON详解+ C# String.Format格式说明+ C# ListView用法详解 很完整

    JSON详解 C# String.Format格式说明 C# ListView用法详解 很完整

  7. C# ListView用法详解

    一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设 ...

  8. ListView用法总结

    前言 列表,它作为一种非常重要的显示形式,不管是在web端还是在移动平台上,都是一种非常友好的,功能强大的展现形式.在Android中,ListView就接管了这一重任.尽管在Android5.X时代 ...

  9. {Reship}{ListView}C# ListView用法详解

    ======================================================================== This aritcle came from http ...

随机推荐

  1. 用expect做自动运行脚本

    下面的脚本演示了在Ubuntu上安装expect,写一个切换用户的expect脚本,并运行脚本看到效果的过程. root@guserver:~# apt-get install expect godu ...

  2. MySQL学习05(MySQL函数)

    MySQL函数 常用函数 官方文档 : https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html 数据函数 SELECT ABS ...

  3. 42岁大龄程序员的迷茫,看我最新尝鲜.net 5+Dapper搭建的WebAPI框架

    42岁大龄程序员的迷茫 我真傻,真的.我单知道雪天是野兽在深山里没有食吃,会到村里来;我不知道春天也会有-- 我真傻,真的.我单知道程序员要活到老学到老,年龄大了要失业;我不知道码农(新型农民工)也会 ...

  4. Echarts 图表位置调整

    Echarts 图表的位置调整 折线图和柱状图,通过grid属性调整. grid:{ show:false, top:'20%', right:'5%', bottom:'10%', left:'10 ...

  5. MySQL约束条件 表关系建立 查询数据

    约束条件 unsigned 无符号 即为非负数,用此类型可以增加数据长度 例如 tinyint最大范围是127,那tinyint unsigned 最大就可以到 127 * 2 通常用在不会出现符号的 ...

  6. 【springcloud】服务熔断与降级(Hystrix)

    转自:https://blog.csdn.net/pengjunlee/article/details/86688858 服务熔断 服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的 ...

  7. Springboot中配置druid

    pom文件信息: <!--引入druid数据源--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> ...

  8. 服务器程序动态加载自定义jar包的过程

    需求: 用过hive的都知道,可以自定义hive的一个udf jar,然后将这个jar add到hive服务端,就会加载这个jar实现用户自定义逻辑.现在的需求就是实现这么一个服务端所做的事情! 场景 ...

  9. 常用数据库JDBC

    JDBC的URL=协议名+子协议名+数据源名.1. 协议名总是"jdbc".2.子协议名由JDBC驱动程序的编写者决定.3. 数据源名也可能包含用户与口令等信息:这些信息也可单独提 ...

  10. VMware ESXi 7.0 U2 SLIC & Unlocker USB 网卡驱动集成镜像 202109更新

    2021.08.31 更新:集成 "vmkusb-nic-fling"."net-community" 和 "nvme-community" ...