当前位置:   article > 正文

Android 入门第四讲01-列表ListView(用代码添加布局文件(添加控件+布局),ListView原理,ListView使用步骤,ListView填充数据案例,ListView填充多个数据)_mlistview=(listview) mlistview.findviewbyid(r.id.l

mlistview=(listview) mlistview.findviewbyid(r.id.listview);

Android 入门第四讲01-列表ListView(用代码添加布局文件(添加控件+布局),ListView的原理,ListView的使用步骤,ListView填充数据案例,ListView填充多个数据)


Android 入门第三讲03-Activity的生命周期(理论)(Activity生命周期中的方法,Activity生命周期(一个和两个activity的生命周期分析))

1.用代码添加布局文件

1.添加控件

第一步先给layout文件的布局添加一个id
在这里插入图片描述
第二步在activity里通过代码拿到布局再添加控件
在这里插入图片描述
第三步根据布局的属性来控制方位
在这里插入图片描述
提示:如果添加的控件覆盖了原来的控件,看谁在上面,这里拿按钮做例子,添加的按钮在上面,所以下面的按钮就失效了

1.添加布局

第一步先新建一个布局
在这里插入图片描述
第二步在activity添加布局
在这里插入图片描述

2.ListView的原理

1.运行程序时,屏幕显示几条条目,listview就加载几条
2.listview本身没有内容,需要adapter来添加内容

在这里插入图片描述

3.ListView的使用步骤

第一步在XML文件里新建
在这里插入图片描述

   <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
        

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

第二步新建一个item
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="100dp">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="33dp"
        android:layout_marginLeft="33dp"
        android:layout_marginTop="38dp"
        android:text="TextView"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="65dp"
        android:layout_marginEnd="97dp"
        android:layout_marginRight="97dp"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
  • 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

第二步添加一个adapter(BaseAdapter是一个抽象类,所以需要重写这个抽象类方法)
在这里插入图片描述
全选然后ok
在这里插入图片描述
在这里插入图片描述
提示:当屏幕有几条就加载几条,下拉出现新的条目才会再加载(比for循环更加优化)
代码


public class MainActivity extends AppCompatActivity {


    ListView mListView;//实例化
    @Override
    protected void onCreate(Bundle savedInstanceState) {//准备工作   页面不可见,当执行完onStart的方法才可见
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView=findViewById(R.id.listview);
        mListView.setAdapter(new MyAdapter());//填充数据

    }
    public class MyAdapter extends BaseAdapter{//BaseAdapter是一个抽象类,所以需要重写这个抽象类方法
        @Override
        public int getCount() {//产生的条目的数量
            return 10;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {//表示条目,相当于布局
            View view=View.inflate(MainActivity.this,R.layout.item,null);
            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

4.ListView填充数据案例

在这里插入图片描述
分析如下

  1. 构造数据
  2. 填充数据
  3. 获取条目数量大小
  4. 将填充的数据赋值给拿到的控件

在这里插入图片描述
代码


public class MainActivity extends AppCompatActivity {


    //构造数据结构
    List<String> lists=new ArrayList<>();
    ListView mListView;//实例化
    @Override
    protected void onCreate(Bundle savedInstanceState) {//准备工作   页面不可见,当执行完onStart的方法才可见
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView=findViewById(R.id.listview);
        for (int i=0;i<66;i++){
            lists.add("这是第"+ i +"条数据");
        }
        mListView.setAdapter(new MyAdapter());//填充数据

    }
    public class MyAdapter extends BaseAdapter{//BaseAdapter是一个抽象类,所以需要重写这个抽象类方法
        @Override
        public int getCount() {//产生的条目的数量
            return lists.size();//获取lists的大小
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {//表示条目,相当于布局
            String s = lists.get(position);//获取条目的位置
            View view=View.inflate(MainActivity.this,R.layout.item,null);
            //拿到文本的引用(直接用findViewById只能拿到activity对应布局文件下的控件,所以要加一个view
            TextView textView=view.findViewById(R.id.textView2);
            textView.setText(s);
            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

5.ListView填充多个数据

第一步创建对象
在这里插入图片描述
第二步填充与取值
在这里插入图片描述
代码


public class MainActivity extends AppCompatActivity {
    //构造数据结构
    List<Student> lists=new ArrayList<>();
    ListView mListView;//实例化
    @Override
    protected void onCreate(Bundle savedInstanceState) {//准备工作   页面不可见,当执行完onStart的方法才可见
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView=findViewById(R.id.listview);
        for (int i=0;i<66;i++){
           Student student=new Student();
           student.name="高冷小王子"+i;
           student.sex="男"+i;
           student.age="18"+i;
           lists.add(student);
        }
        mListView.setAdapter(new MyAdapter());//填充数据
    }
    public class MyAdapter extends BaseAdapter{//BaseAdapter是一个抽象类,所以需要重写这个抽象类方法
        @Override
        public int getCount() {//产生的条目的数量
            return lists.size();//获取lists的大小
        }
        @Override
        public Object getItem(int position) { return null; }
        @Override
        public long getItemId(int position) { return 0; }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {//表示条目,相当于布局
            Student s = lists.get(position);//获取条目的位置
            View view=View.inflate(MainActivity.this,R.layout.item,null);
            //拿到文本的引用(直接用findViewById只能拿到activity对应布局文件下的控件,所以要加一个view
            TextView textView=view.findViewById(R.id.textView2);
            textView.setText(s.name);
            TextView textView1=view.findViewById(R.id.textView3);
            textView1.setText(s.sex);
            TextView textView2=view.findViewById(R.id.textView4);
            textView2.setText(s.age);
            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

嘿嘿嘿,本讲的内容就先讲到这里啦,谢谢您的阅读,下一讲更加精彩哦。
Android 入门第四讲02-列表ListView(ListView item高度问题,ListView控件缺点,ListView控件优化(面试常问问题),ListView控件二次优化)
博主为了可以学到更多的Android知识,创建了一个安卓知识交流群,欢迎大佬入群,当然也欢迎和我一样的安卓小白,我们可以一起交流,最重要的是快乐水群,记得定个小目标,冲击bat

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/170830
推荐阅读
相关标签
  

闽ICP备14008679号