依然是一个listView的Java文件

 1 public class ListViewActivity extends Activity {
2 private ListView lv1;
3 @Override
4 protected void onCreate(@Nullable Bundle savedInstenceState) {
5
6 super.onCreate(savedInstenceState);
7 setContentView(R.layout.activity_listview);
8 lv1=findViewById(R.id.lv_1);
9 lv1.setAdapter(new MylistAdapter(ListViewActivity.this));
10 lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
11 @Override
12 public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
13 Toast.makeText(ListViewActivity.this, "点击pos:"+i, Toast.LENGTH_SHORT).show();
14 }
15 });
16 lv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
17 @Override
18 public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
19 Toast.makeText(ListViewActivity.this, "长按pos:"+i, Toast.LENGTH_SHORT).show();
20 return true;//这里如果返回false的话,处理完长按事件后还会处理点击事件,也就是说会弹出两个提示框,为了让他只显示一个对话框改为true
21 }
22 });
23 }
24 }

对应的activity_listview.xml文件

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="match_parent"
3 android:layout_height="match_parent">
4
5 <ListView
6 android:id="@+id/lv_1"
7 android:layout_width="match_parent"
8 android:layout_height="wrap_content"
9 android:listSelector="@drawable/list_item"/>
10 <!-- 这里listSelector设置的是点击样式,效果-->
11
12 </LinearLayout>

其中设置的点击效果xml文件为

1 <selector xmlns:android="http://schemas.android.com/apk/res/android">
2 <item android:state_pressed="true" android:drawable="@color/purple_200"/>
3 <item android:drawable="@color/touming"/>
4 </selector>

这里面state_pressed和state_checked是不一样的,checked是选中的意思,pressed是按压时候的效果,注意区分。

然后layout_list_item.xml文件是设置list中每一个元素的样式结构的文件

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="match_parent"
3 android:layout_height="match_parent"
4 android:orientation="horizontal"
5 android:padding="10dp">
6 <ImageView
7 android:id="@+id/imv"
8 android:layout_width="100dp"
9 android:layout_height="100dp"
10 android:scaleType="centerCrop"
11 android:background="#000"/>
12 <LinearLayout
13 android:layout_width="match_parent"
14 android:layout_height="wrap_content"
15 android:orientation="vertical"
16 android:paddingLeft="10dp">
17 <TextView
18 android:id="@+id/tv_title"
19 android:layout_width="wrap_content"
20 android:layout_height="wrap_content"
21 android:text="你好你好"
22 android:textColor="@color/black"
23 android:textSize="20sp"/>
24 <TextView
25 android:id="@+id/tv_time"
26 android:layout_width="wrap_content"
27 android:layout_height="wrap_content"
28 android:text="2022-01-28"
29 android:textColor="@color/greydrak"
30 android:paddingTop="10dp"
31 android:textSize="17sp"/>
32 <TextView
33 android:id="@+id/tv_content"
34 android:layout_width="wrap_content"
35 android:layout_height="wrap_content"
36 android:text="你好,我是内容"
37 android:textColor="@color/greydrak"
38 android:paddingTop="10dp"
39 android:textSize="17sp"/>
40 </LinearLayout>
41 </LinearLayout>

然后建立MyListAdapter的Java文件来定义列表中每个元素的具体结构的值:

 1 public class MylistAdapter extends BaseAdapter {
2 private Context context;
3 private LayoutInflater layoutInflater;
4 public MylistAdapter(Context context){
5 this.context=context;
6 layoutInflater=LayoutInflater.from(context);
7 }
8 @Override
9 public int getCount() {
10 return 10;
11 }//列表长度
12
13 @Override
14 public Object getItem(int i) {
15 return null;
16 }//不怎么用
17
18 @Override
19 public long getItemId(int i) {
20 return 0;
21 }//不怎么用
22
23 static class ViewHolder{
24 public ImageView imageview;
25 public TextView tvTitle,tvTime,tvContent;
26 }
27
28 @Override
29 public View getView(int i, View view, ViewGroup viewGroup) {
30 ViewHolder holder=null;
31 if(view==null){
32 view=layoutInflater.inflate(R.layout.layout_list_item,null);
33 holder=new ViewHolder();
34 holder.imageview=view.findViewById(R.id.imv);
35 holder.tvTitle=view.findViewById(R.id.tv_title);
36 holder.tvContent=view.findViewById(R.id.tv_content);
37 holder.tvTime=view.findViewById(R.id.tv_time);
38 view.setTag(holder);
39 }else{
40 holder= (ViewHolder) view.getTag();
41 }
42 //给控件赋值
43 holder.tvTitle.setText("我是大标题");
44 holder.tvTime.setText("2066-06-6");
45 holder.tvContent.setText("说点啥呢啥呢");
46 Glide.with(context).load("https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png").into(holder.imageview);
47 return view;
48 }
49 }

列表视图ListView的更多相关文章

  1. React-Native基础_5.列表视图ListView

    列表视图ListView 用来显示垂直滚动列表,需要指定两个东西,1 数据的来源 dataSource,2 渲染列表的条目布局 rendRow 'use strict' import React, { ...

  2. Android 自学之列表视图ListView和ListActivity

    ListView是手机系统中使用非常广泛的一种组件,它以垂直列表的形式显示所有列表项. 创建ListView有两种方式: 直接使用ListView创建. 让Activity继承ListActivity ...

  3. Android——列表视图(ListView)

    列表视图是android中最常用的一种视图组件,它以垂直列表的形式列出需要显示的列表项.在android中有两种方法向屏幕中添加列表视图:一种是直接使用ListView组件创建:另外一种是让Activ ...

  4. 滚动视图、列表视图[ListView、SimpleAdapter类]

    滚动视图 <ScrollView android: layout_width="fill_parent" android: layout_height="fill_ ...

  5. andorid 列表视图 ListView 之BaseAdapter

    .xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android=&qu ...

  6. 列表视图(ListView和ListActivity)

    在ListView中显示网络图片 ImageView 类虽然有一个 setImageUri 方法,但不能直接接受一个由网络地址生成的uri作为参数从而显示图片,我们只好使用其 setImageBitm ...

  7. andorid 列表视图 ListView 之ArrayAdapter

    activity_ui3.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns ...

  8. Android——列表视图 ListView(三)BaseAdapter

    activity_activitybase.xml <?xml version="1.0" encoding="utf-8"?> <ListV ...

  9. Android——列表视图 ListView(二)SimpleAdapter

    SimpleAdapter:可显示文字加图片 activity_activitysimple.xml <?xml version="1.0" encoding="u ...

  10. React-Native基础_5.列表视图ListView 网络数据展示

    //获取网络数据 并用列表展示 豆瓣Top250 api /** * Sample React Native App * https://github.com/facebook/react-nativ ...

随机推荐

  1. java单例模式(饿汉式和懒汉式)

    1 /* 2 * 设计模式:对问题行之有效的解决方式.其实它是一种思想. 3 * 4 * 1,单例设计模式 5 * 解决的问题:就是可以保证一个类在内容中的对象唯一性. 6 * 7 * 必须对于多个程 ...

  2. java内部类细节

    1 package face_09; 2 /* 3 * 为什么内部类能直接访问外部类中的成员呢? 4 * 那是因为内部类持有了外部类的引用. 外部类名.this 5 * 6 */ 7 class Ou ...

  3. Java 中对象锁和类锁的区别? 关键字 Synchronized的用法?

    一  对象锁和类锁的关系 /* * 对象锁和[类锁] 全局锁的关系? 对象锁是用于对象实例方法,或者一个对象实例上的 this 类锁是用于类的静态方法或者一个类的class对象上的. Ag.class ...

  4. 利用application在页面中显示访问次数

    在jsp页面中实现. <%@ page language="java" contentType="text/html; charset=UTF-8" pa ...

  5. Spring事物

    简介 Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现. Spring事务管理器的接口是org ...

  6. Collection和Map集合

    前言 集合的长度是可变的.集合存储的都是对象.而且对象的类型可以不一致. Collection集合和Map集合是所有集合的父接口. Collection接口定义 体系结构的根接口,代表一组对象,有两个 ...

  7. Jackson转换为Collection、Array

    1. Jackson转化为Array 注意的地方就是实体类一定要有无参的构造方法,否则会报异常 //com.fasterxml.jackson.databind.exc.InvalidDefiniti ...

  8. LAMP架构—源码编译安装 (爱情受过伤,为爱跳过鸭绿江)

    LAMP架构--源码编译安装 1.LAMP架构概述 2.编译安装Apache httpd 服务 3.编译安装mysql 服务 4.编译安装PHP 解析服务 5.利用LAMP搭建论坛 1.LAMP架构概 ...

  9. shell——wait与多进程并发

    在脚本里用&后台打开多个子进程,用wait命令可以使这些子进程并行执行. 例1: fun1(){ while true do echo 1 sleep 1 done } fun2(){ whi ...

  10. python篇第5天【变量】

    第4天加班 多个变量赋值 Python允许你同时为多个变量赋值.例如: a = b = c = 1 以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上. 您也可以为多个对象指定多个变 ...