Android-Activity生命周期以及ListView学习

3、Activity的生命周期

各个生命周期方法的简单介绍

4、学习 ListView

  • 4.1 以 MainActivity为默认启动界面,并实现3秒跳转

    public class MainActivity extends AppCompatActivity {
    
        Handler mHandler = new Handler(); // 创建一个 Handler对象
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      	  
            // 发送一个可执行对象
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    // 跳转到 ListViewActivity
                    Intent intent = new Intent(MainActivity.this, ListViewActivity.class);
                    startActivity(intent);
                }
            }, 3000);// 3秒后跳转
        }
    }
    
  • 4.2 创建一个 UserInfo类

    public class UserInfo implements Serializable {
    
        private String mUsername;
        private Integer mAge;
        private String avatar;
    
        public UserInfo() {
        }
    
        public UserInfo(String mUsername, Integer mAge) {
            this.mUsername = mUsername;
            this.mAge = mAge;
        }
    
        public String getmUsername() {
            return mUsername;
        }
    
        public void setmUsername(String mUsername) {
            this.mUsername = mUsername;
        }
    
        public Integer getmAge() {
            return mAge;
        }
    
        public void setmAge(Integer mAge) {
            this.mAge = mAge;
        }
    
        public String getAvatar() {
            return avatar;
        }
    
        public void setAvatar(String avatar) {
            this.avatar = avatar;
        }
    }
    
  • 4.3 在 res/layout下新建一个 activity_listview.xml文件

    image.png

  • 4.4 新建一个 ListViewActivity,并添加列表数据,再加入到AndroidManifest.xml中

    public class ListViewActivity extends Activity {
    
        private ListView mPhoneBookListView;
        private List<UserInfo> mUserInfos;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_listview);
    
            mPhoneBookListView = findViewById(R.id.list_view);
            mUserInfos = new ArrayList<>();
            mUserInfos.add(new UserInfo("小明", 16));
            mUserInfos.add(new UserInfo("小红", 17));
            mUserInfos.add(new UserInfo("小李", 18));
            mUserInfos.add(new UserInfo("小芳", 19));
            mUserInfos.add(new UserInfo("小黄", 20));
    
            PhoneBookAdapter phoneBookAdapter = new PhoneBookAdapter(ListViewActivity.this, mUserInfos);
            mPhoneBookListView.setAdapter(phoneBookAdapter);
    
            // 设置点击事件
            mPhoneBookListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(ListViewActivity.this,
                         mUserInfos.get(position).getmUsername() + "被点击了", Toast.LENGTH_SHORT).show();
                }
            });
    
            // 设置长按事件
            mPhoneBookListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(ListViewActivity.this,
                         mUserInfos.get(position).getmUsername() + "被长按了", Toast.LENGTH_SHORT).show();
                    return false;
                }
            });
        }
    }
    
    <activity android:name=".ListViewActivity"></activity>
    
  • 4.5 构造桥梁,创建 PhoneBookAdapter类,并创建 item_phonebook.xml文件

    public class PhoneBookAdapter extends BaseAdapter {
    
        private Context mContext; // 声明 Context上下文
        private LayoutInflater mLayoutInflater; // 声明 LayoutInflater:加载布局管理器
        private List<UserInfo> mUserInfos = new ArrayList<>(); // 创建 UserInfo集合
    	
        // 创建一个构造器,初始化数据
        public PhoneBookAdapter(Context context, List<UserInfo> userInfos) {
            mContext = context;
            mUserInfos = userInfos;
            mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
    
        @Override
        public int getCount() {
            // 有多少条数据
            return mUserInfos.size();
        }
    
        @Override
        public Object getItem(int position) {
            // 返回某一条数据对象
            return mUserInfos.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            // 每一条数据的ID
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // 返回一个视图
    
            // 将 xml布局文件转换为 View对象,并将 item_phonebook视图中的每一条item解析出来
            convertView = mLayoutInflater.inflate(R.layout.item_phonebook, null);
            // 获取控件
            TextView nameTextView = convertView.findViewById(R.id.name_text_view);
            TextView ageTextView = convertView.findViewById(R.id.age_text_view);
            ImageView avatarImageView = convertView.findViewById(R.id.avatar_text_view);
            // 和数据之间进行绑定
            nameTextView.setText(mUserInfos.get(position).getmUsername());
            ageTextView.setText(String.valueOf(mUserInfos.get(position).getmAge()));
            avatarImageView.setImageResource(R.drawable.phonebook);
    
            return convertView;
        }
    }
    

    image.png

  • 4.6 效果预览

    android-listview.gif


本节学习内容就到这里了。学习地址:https://www.bilibili.com/video/av89274094

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值