Android 入门第四讲01-列表ListView(用代码添加布局文件(添加控件+布局),ListView的原理,ListView的使用步骤,ListView填充数据案例,ListView填充多个数据)
- 1.用代码添加布局文件
- 1.添加控件
- 1.添加布局
Android 入门第三讲03-Activity的生命周期(理论)(Activity生命周期中的方法,Activity生命周期(一个和两个activity的生命周期分析))
1.用代码添加布局文件
1.添加控件
第一步先给layout文件的布局添加一个id
第二步在activity里通过代码拿到布局再添加控件
第三步根据布局的属性来控制方位
提示:如果添加的控件覆盖了原来的控件,看谁在上面,这里拿按钮做例子,添加的按钮在上面,所以下面的按钮就失效了
1.添加布局
第一步先新建一个布局
第二步在activity添加布局
2.ListView的原理
1.运行程序时,屏幕显示几条条目,listview就加载几条
2.listview本身没有内容,需要adapter来添加内容
3.ListView的使用步骤
第一步在XML文件里新建
<ListViewandroid: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\"><TextViewandroid: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\" /><Buttonandroid: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;//实例化@Overrideprotected 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是一个抽象类,所以需要重写这个抽象类方法@Overridepublic int getCount() {//产生的条目的数量return 10;}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//表示条目,相当于布局View view=View.inflate(MainActivity.this,R.layout.item,null);return view;}}}
4.ListView填充数据案例
分析如下
- 构造数据
- 填充数据
- 获取条目数量大小
- 将填充的数据赋值给拿到的控件
代码
public class MainActivity extends AppCompatActivity {//构造数据结构List<String> lists=new ArrayList<>();ListView mListView;//实例化@Overrideprotected 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是一个抽象类,所以需要重写这个抽象类方法@Overridepublic int getCount() {//产生的条目的数量return lists.size();//获取lists的大小}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic 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对应布局文件下的控件,所以要加一个viewTextView textView=view.findViewById(R.id.textView2);textView.setText(s);return view;}}}
5.ListView填充多个数据
第一步创建对象
第二步填充与取值
代码
public class MainActivity extends AppCompatActivity {//构造数据结构List<Student> lists=new ArrayList<>();ListView mListView;//实例化@Overrideprotected 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是一个抽象类,所以需要重写这个抽象类方法@Overridepublic int getCount() {//产生的条目的数量return lists.size();//获取lists的大小}@Overridepublic Object getItem(int position) { return null; }@Overridepublic long getItemId(int position) { return 0; }@Overridepublic 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对应布局文件下的控件,所以要加一个viewTextView 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控件二次优化)