今天复习了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. 说说 VARCHAR 背后的那些事

    在使用MySQL的过程中,在存储字符串时,大家或许都有过这样或那样的困惑,譬如: 1.  对于固定长度的字符串,为什么推荐使用 CHAR 来存储? 2.  VARCHAR 可设置的最大长度是多少? 3 ...

  2. 跟我一起写 Makefile(六)

    书写命令 ---- 每条规则中的命令和操作系统Shell的命令行是一致的.make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的.在命令行 ...

  3. java.lang.instrument.Instrumentation

    java.lang.instrument.Instrumentation 看完文档之后,我们发现这么两个接口:redefineClasses和retransformClasses.一个是重新定义cla ...

  4. Java 多线程与并发【知识点笔记】

    Java 多线程与并发[知识点笔记] Java多线程与并发 先说一下线程与进程的由来: 在初期的计算机,计算机只能串行执行任务,并且需要长时间的等待用户的输入才行 到了后来,出现了批处理,可以预先将用 ...

  5. 用Vsftpd服务传输文件

    文件传输协议 文件传输协议(FTP,File Transfer Protocol),即能够让用户在互联网中上传.下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要F ...

  6. <span> 标签与<p>标签的区别

    p标签指一个段落,是块级元素,有换行效果:span是行内元素,一般单独修饰文字: span 标签可以放在p标签里,p标签不应该放在span标签里:

  7. Nebula 2.5.0安装过程及遇到的坑

    2021年8月23日,Nebula 发布了最新版本:2.5.0,正好赶上新环境部署,记录一下安装过程及遇到的坑: 一.准备工作 以下安装使用nebula用户,搭建集群模式,一共三台机器:192.168 ...

  8. IDEA远程调试代码

    一.设置远程调式端口 点击Remote 设置名字和要部署的远程服务器IP地址和端口 二.将Jar包上传到远程服务器运行 启动命令 java -Xdebug -agentlib:jdwp=transpo ...

  9. SpringBoot监听redis订阅监听和发布订阅

    前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package ...

  10. Asp.NetCore 中Aop的应用

    前言 其实好多项目中,做一些数据拦截.数据缓存都有Aop的概念,只是实现方式不一样:之前大家可能都会利用过滤器来实现Aop的功能,如果是Asp.NetCore的话,也可能会使用中间件: 而这种实现方式 ...