• Android学习笔记 16. ListView


    Android学习笔记

    Android基础开发——ListView

    16. ListView

    实现滑动条目

    16.1 list_item布局
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:id="@+id/tv"
            android:textSize="30sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    LinearLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    16.2 Java Bean
    package com.dingjiaxiong.mylistview;
    
    public class Bean {
        
        String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    16.3 设置数据

    在这里插入图片描述

    16.4 辅助类——Adapter
    package com.dingjiaxiong.mylistview;
    
    import android.content.Context;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    
    import java.util.List;
    
    public class MyAdapter extends BaseAdapter {
    
        private static final String TAG = "dingjiaxiong";
        private List<Bean> data;
        private Context context;
    
        //构造方法
        public MyAdapter(List<Bean> data, Context context) {
            this.data = data;
            this.context = context;
        }
    
        @Override
        public int getCount() {
            return data.size();
        }
    
        @Override
        public Object getItem(int i) {
            return null;
        }
    
        @Override
        public long getItemId(int i) {
            return i;
        }
    
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            if(view == null){
                view = LayoutInflater.from(context).inflate(R.layout.list_item,viewGroup,false);
            }
    
            TextView textView = view.findViewById(R.id.tv);
            textView.setText(data.get(i).getName());
    
            Log.e(TAG, "getView: "+ i);
    
            return view;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    16.5 配置数据
    //拿到listview
    ListView listView = findViewById(R.id.lv);
    
    listView.setAdapter(new MyAdapter(data , this));
    
    • 1
    • 2
    • 3
    • 4

    运行

    在这里插入图片描述

    16.6 list_view的点击事件
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Log.e("dingjiaxiong", "onItemClick: " + i);
        }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    16.7 优化 ViewHolder

    MyAdapter.java

    package com.dingjiaxiong.mylistview;
    
    import android.content.Context;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    
    import java.util.List;
    
    public class MyAdapter extends BaseAdapter {
    
        private static final String TAG = "dingjiaxiong";
        private List<Bean> data;
        private Context context;
    
        //构造方法
        public MyAdapter(List<Bean> data, Context context) {
            this.data = data;
            this.context = context;
        }
    
        @Override
        public int getCount() {
            return data.size();
        }
    
        @Override
        public Object getItem(int i) {
            return null;
        }
    
        @Override
        public long getItemId(int i) {
            return i;
        }
    
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            
            ViewHolder viewHolder;
            
            if(view == null){
                viewHolder = new ViewHolder();
                view = LayoutInflater.from(context).inflate(R.layout.list_item,viewGroup,false);
                viewHolder.textView = view.findViewById(R.id.tv);
                view.setTag(viewHolder);
            }
            else{
                viewHolder = (ViewHolder) view.getTag();
            }
    
    
            viewHolder.textView.setText(data.get(i).getName());
    
            Log.e(TAG, "getView: "+ i);
    
            return view;
        }
        
        private final class ViewHolder{
            TextView textView;
        }
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67

    在这里插入图片描述

  • 相关阅读:
    【Spring笔记02】Spring中的IOC容器和DI依赖注入介绍
    Home Assistant:基于Python的智能家居开源系统详解
    HuTool工具类 CollUtil 实现多个集合的交集、差集
    七牛云创建存储空间并绑定自定义域名-https协议
    Flutter学习-开篇
    新闻发稿多少钱一篇?轻松发布新闻一站式发稿服务平台
    三级_网络技术_14_局域网技术基础及应用
    HTML5期末考核大作业 基于HTML+CSS+JavaScript仿王者荣耀首页 游戏网站开发 游戏官网设计与实现
    第二章单元补充
    CUDA和cuDNN安装配置
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126240069