• 【Android】利用回收机制创建ListView列表实现


    MainActivity.java
    package com.glandroid.listviewdemo;
    
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ListView;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        private ListView lv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // mvc 开发模式
            // model 数据模型
            // view 视图
            // controller 控制器
            lv = (ListView) findViewById(R.id.lv);
            lv.setAdapter(new MyAdapter());
        }
    
        private class MyAdapter extends BaseAdapter {
    
            /**
             *获取列表里面一共有多少条记录
             * @return 返回记录总数
             */
            @Override
            public int getCount() {
                return 1000000;
            }
    
            /**
             * 返回一个view对象,这个view对象显示在指定的位置
             * @param position
             *          item的位置
             * @param convertView
             *          回收的view
             * @param parent
             *          父容器
             * @return  返回的view对象
             */
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                TextView tv;
                if (convertView == null) {
                    tv = new TextView(MainActivity.this);
                    System.out.println("创建新的view:" + position);
                } else {
                    tv = (TextView) convertView;
                    System.out.println("使用回收的view:" + position);
                }
                tv.setText("我是文本:" + position);
                tv.setTextColor(Color.RED);
                tv.setTextSize(20);
                return tv;
            }
    
            /**
             * 获取一条item
             * @param position
             *          item的位置
             * @return  item
             */
            @Override
            public Object getItem(int position) {
                return null;
            }
    
            /**
             * 获取一条item的id
             * @param position
             *          item的位置
             * @return  item的id
             */
            @Override
            public long getItemId(int position) {
                return 0;
            }
        }
    }

    布局文件:

    <?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="match_parent"
                  android:orientation="vertical">
    
        <ListView
            android:id="@+id/lv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </LinearLayout>
  • 相关阅读:
    storm学习笔记
    Hbase学习笔记
    Hadoop实战项目之网站数据点击流分析(转载分析)
    Hive实战之学生选课
    Hive实战之求月销售额和累计销售额
    Hive实战之每年最高温度+时间
    Hive实战之学生课程成绩
    网易-C++开发实习生-业务初面和复面(视频)-20211028
    2021粤港澳大湾区智能网络与通信系统论坛-1026~1027-线上
    jupyter notebook
  • 原文地址:https://www.cnblogs.com/xiaofu007/p/10577978.html
Copyright © 2020-2023  润新知