赞
踩
第一步先给layout文件的布局添加一个id
第二步在activity里通过代码拿到布局再添加控件
第三步根据布局的属性来控制方位
提示:如果添加的控件覆盖了原来的控件,看谁在上面,这里拿按钮做例子,添加的按钮在上面,所以下面的按钮就失效了
第一步先新建一个布局
第二步在activity添加布局
1.运行程序时,屏幕显示几条条目,listview就加载几条
2.listview本身没有内容,需要adapter来添加内容
第一步在XML文件里新建
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
第二步新建一个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>
第二步添加一个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; } } }
分析如下
代码
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; } } }
第一步创建对象
第二步填充与取值
代码
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; } } }
嘿嘿嘿,本讲的内容就先讲到这里啦,谢谢您的阅读,下一讲更加精彩哦。
Android 入门第四讲02-列表ListView(ListView item高度问题,ListView控件缺点,ListView控件优化(面试常问问题),ListView控件二次优化)
博主为了可以学到更多的Android知识,创建了一个安卓知识交流群,欢迎大佬入群,当然也欢迎和我一样的安卓小白,我们可以一起交流,最重要的是快乐水群,记得定个小目标,冲击bat
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。