博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android-Activity生命周期以及ListView学习
阅读量:3943 次
发布时间:2019-05-24

本文共 4992 字,大约阅读时间需要 16 分钟。

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
    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; } }); }}
  • 4.5 构造桥梁,创建 PhoneBookAdapter类,并创建 item_phonebook.xml文件

    public class PhoneBookAdapter extends BaseAdapter {
    private Context mContext; // 声明 Context上下文 private LayoutInflater mLayoutInflater; // 声明 LayoutInflater:加载布局管理器 private List
    mUserInfos = new ArrayList<>(); // 创建 UserInfo集合 // 创建一个构造器,初始化数据 public PhoneBookAdapter(Context context, List
    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

转载地址:http://eziwi.baihongyu.com/

你可能感兴趣的文章
postgresql+postgis空间数据库总结
查看>>
spring 之 Http Cache 和 Etag(转)
查看>>
基于Lucene查询原理分析Elasticsearch的性能(转)
查看>>
HttpClient请求外部服务器NoHttpResponseException
查看>>
springCloud升级到Finchley.RELEASE,SpringBoot升级到2.0.4
查看>>
Spring boot + Arthas
查看>>
omitted for duplicate jar包冲突排查
查看>>
如何保证缓存与数据库的双写一致性?
查看>>
java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy排查
查看>>
深浅拷贝,深浅克隆clone
查看>>
Java基础零散技术(笔记)
查看>>
Mysql优化sql排查EXPLAIN EXTENDED
查看>>
线程之间数据传递ThreadLocal,InheritableThreadLocal,TransmittableThreadLocal
查看>>
spring循环依赖,解决beans in the application context form a cycle
查看>>
分布式锁的实现
查看>>
解决POJO的属性首字母为大写,但是赋值不了的问题
查看>>
服务器运维整理(笔记)
查看>>
redis分布式锁在MySQL事务代码中使用,没控制好并发原因
查看>>
centos7中的网卡一致性命名规则、网卡重命名方法
查看>>
能切换环境的python
查看>>