一、实验目的

深入学习Fragment的用法,自定义列表(ListView)视图的实现。

二、实验内容

实现一个班级名单的列表视图

  1. 每个列表项包含:个人照片,学号和姓名,电话;

  2. 可以删除列表项,添加列表项;

  3. 可以从列表项拨打对应的电话号码。

三、结构搭建

四、代码实现

  activity_main.xml

<?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:id="@+id/fragment_list"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"></androidx.constraintlayout.widget.ConstraintLayout>

  fragment_listxml

<?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="match_parent"android:orientation="vertical"tools:context=".ListFragment"><EditTextandroid:id="@+id/edit_id"android:layout_width="wrap_content"android:layout_height="35dp"android:layout_marginStart="28dp"android:layout_marginTop="16dp"android:ems="10"android:hint="Please input id"android:inputType="text"android:textSize="13sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/edit_name"android:layout_width="wrap_content"android:layout_height="35dp"android:layout_marginTop="8dp"android:ems="10"android:hint="Please input name"android:inputType="text"android:textSize="13sp"app:layout_constraintStart_toStartOf="@+id/edit_id"app:layout_constraintTop_toBottomOf="@+id/edit_id" /><EditTextandroid:id="@+id/edit_tel"android:layout_width="wrap_content"android:layout_height="35dp"android:layout_marginTop="8dp"android:ems="10"android:hint="Please input phone"android:inputType="text"android:textSize="13sp"app:layout_constraintStart_toStartOf="@+id/edit_name"app:layout_constraintTop_toBottomOf="@+id/edit_name" /><Buttonandroid:id="@+id/btn_commit"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="84dp"android:layout_marginTop="52dp"android:text="submit"app:layout_constraintStart_toEndOf="@+id/edit_name"app:layout_constraintTop_toTopOf="parent" /><ListViewandroid:id="@+id/lv_stu"android:layout_width="match_parent"android:layout_height="592dp"android:layout_marginTop="36dp"app:layout_constraintTop_toBottomOf="@+id/btn_commit"tools:layout_editor_absoluteX="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

  list_item_layout.xml

<?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="75dp"><TextViewandroid:id="@+id/tv_id"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="36dp"android:text="TextView"app:layout_constraintStart_toEndOf="@+id/imageView"app:layout_constraintTop_toTopOf="@+id/imageView" /><TextViewandroid:id="@+id/tv_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:text="TextView"app:layout_constraintStart_toStartOf="@+id/tv_id"app:layout_constraintTop_toBottomOf="@+id/tv_id" /><ImageViewandroid:id="@+id/imageView"android:layout_width="49dp"android:layout_height="48dp"android:layout_marginStart="16dp"android:layout_marginTop="12dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"android:src="@drawable/stu" /><TextViewandroid:id="@+id/tv_tel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="140dp"android:text="TextView"app:layout_constraintBottom_toBottomOf="@+id/imageView"app:layout_constraintStart_toEndOf="@+id/imageView"app:layout_constraintTop_toTopOf="@+id/imageView" /><androidx.appcompat.widget.AppCompatImageButtonandroid:id="@+id/btn_delete"android:layout_width="30dp"android:layout_height="30dp"android:layout_marginStart="324dp"android:layout_marginTop="18dp"android:text="删除"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:srcCompat="@android:drawable/ic_menu_close_clear_cancel" /></androidx.constraintlayout.widget.ConstraintLayout>

  MainActivity

package com.suke.fragmentstudent;import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);FragmentManager fm = getSupportFragmentManager();Fragment fragment = fm.findFragmentById(R.id.fragment_list);if (fragment == null) {fragment = new ListFragment();fm.beginTransaction().add(R.id.fragment_list, fragment).commit();}}
}

  ListFragment

package com.suke.fragmentstudent;import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;import java.util.ArrayList;
import java.util.List;public class ListFragment extends Fragment {private List<Student> list_stu = new ArrayList<>();private StudentAdapter adapter;private EditText editId;private EditText editName;private EditText editTel;private Button btnCommit;private ListView lvStu;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setRetainInstance(true);}@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_list, container, false);initView(view);initData();return view;}private void initData() {for (int i = 1; i < 6; i++) {list_stu.add(new Student("1920013522" + i, "书启秋枫" + i, "1531214566" + i));}adapter = new StudentAdapter();lvStu.setAdapter(adapter);}private void initView(View view) {editId = (EditText) view.findViewById(R.id.edit_id);editName = (EditText) view.findViewById(R.id.edit_name);editTel = (EditText) view.findViewById(R.id.edit_tel);btnCommit = (Button) view.findViewById(R.id.btn_commit);lvStu = (ListView) view.findViewById(R.id.lv_stu);btnCommit.setOnClickListener(v -> {String id = editId.getText().toString();String name = editName.getText().toString();String tel = editTel.getText().toString();editId.setText("");editName.setText("");editTel.setText("");list_stu.add(new Student(id, name, tel));adapter.notifyDataSetChanged();});}private class StudentAdapter extends BaseAdapter {private TextView tvId;private TextView tvName;private ImageView imageView;private TextView tvTel;private ImageButton btnDelete;@Overridepublic int getCount() {return list_stu.size();}@Overridepublic Object getItem(int position) {return list_stu.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item_layout, parent, false);tvId = (TextView) convertView.findViewById(R.id.tv_id);tvName = (TextView) convertView.findViewById(R.id.tv_name);imageView = (ImageView) convertView.findViewById(R.id.imageView);tvTel = (TextView) convertView.findViewById(R.id.tv_tel);btnDelete = (ImageButton) convertView.findViewById(R.id.btn_delete);tvId.setText(list_stu.get(position).getSno());tvName.setText(list_stu.get(position).getSname());tvTel.setText(list_stu.get(position).getStele());tvTel.setOnClickListener(v -> {String tel = list_stu.get(position).getStele();Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + tel));startActivity(intent);});btnDelete.setOnClickListener(v -> {list_stu.remove(position);adapter.notifyDataSetChanged();});return convertView;}}
}

  Student

package com.suke.fragmentstudent;public class Student {private String Sno;private String Sname;private String Stele;public Student(String sno, String sname, String stele) {Sno = sno;Sname = sname;Stele = stele;}public String getSno() {return Sno;}public void setSno(String sno) {Sno = sno;}public String getSname() {return Sname;}public void setSname(String sname) {Sname = sname;}public String getStele() {return Stele;}public void setStele(String stele) {Stele = stele;}
}

五、运行结果

 

实验五 Android Studio ListView列表视图【班级名单列表视图01】相关推荐

  1. Android Studio DeviceFileExplorer 看不到文件列表问题

    Android Studio DeviceFileExplorer 看不到文件列表问题 问题:部分机器,有root权限,但在Android Studio 的 DeviceFileExplorer 内看 ...

  2. 实验七 Android Studio Intent相机图库读取照片【班级名单列表视图03】

    一.实验目的 掌握Intent启动外部应用并交互数据的方法,了解Android权限和访问外部文件的方法. 二.实验内容 在SQLite版本的班级名单基础上实现以下功能 1. 设计修改列表项的Fragm ...

  3. 《移动项目实践》实验报告——Android Studio环境搭建

    源代码:https://gitee.com/shentuzhigang/mini-project/tree/master/android-helloworld 实验内容 安装JAVA JDK,并配置环 ...

  4. 安卓移动开发实验:Android Studio设计微信界面

    一.实验的目的 通过使用Android Studio的Fragment和layout,来实现简单的微信界面切换. 二.app的功能 能够通过应用底部的bottom来实现四个页面的来回切换. 三.实验过 ...

  5. Android Studio ListView+SimpleAdapter使用之仿酷狗界面

    写博客的目的在于分享,更是为了积累项目经验.博客亦是一本武功秘籍,回头哪个招式忘了怎么耍,也好对照参考.这篇文章是对ListView,SimpleAdapter以及ListView监听事件的使用详解, ...

  6. Android Studio ListView框架+优化安卓应用市场实例

    直接使用ListView的基本步骤 获取数据 创建适配器 绑定适配器 需要实现重写的函数: getCount() 获取数据长度 getItem (int position) 获取项资源 getItem ...

  7. Android Studio ListView数据适配器实现通讯录设计(头像加名称)

    需求:设计一个通讯录列表(六组数据),以显示头像和名称. 1.自定义布局,用于显示listview的列表单项 2.自定义BaseAdapter 3.绑定数据适配器 结果:如图 一.UI布局设计 A: ...

  8. android studio升级到3.0之后布局视图_升级到AndroidStudio3.0 之后的遇到问题的处理(新建、方法数限制等)...

    引言: 遇到的新问题: 1,新建项目报错: Unable to resolve dependency for :app@debug/compileClasspath': Could not resol ...

  9. Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld

    前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...

  10. android多个列表显示,Android采用ListView三种显示数据列表(附源码)

    Android系统中列表形式的显示方式应该是我们最熟悉不过的界面了,例如通讯录.通话记录.信息列表等等,例如下面的形式: 我们在开发项目需要用到这种形式显示信息时除了调用系统给我们提供的ListVie ...

最新文章

  1. python所有算法_Python实现的各种常见分布算法示例
  2. Linux crontab下关于使用date命令和sudo命令的坑
  3. 合肥python招聘_2020年合肥京东方招聘官网招聘-合肥京东方招聘官网招聘求职信息-拉勾招聘...
  4. 智能计算机的功能是什么问题,人工智能在电脑系统的作用
  5. Mysql 索引案例学习
  6. 【lizhi125】比Nero更好用的免费小巧的光盘刻录软件——ImgBurn(中文版)
  7. 方舟生存 服务器修改器,【修改贴】关于单机版gg修改器的应用。
  8. 人人商城小程序昵称变成了“微信用户”头像也不显示?getUserInfo换成getUserProfile
  9. 读书笔记《松本行弘的程序世界》
  10. 如何上传代码到github?
  11. 国美易卡被曝涉嫌〃高利贷〃,威胁用户把隐私卖给诈骗集团
  12. An error has occured.See the log file
  13. 计算机内存不够闪退怎么办,win7内存不足导致软件应用闪退怎么解决
  14. epub是什么文件?epub文件怎么打开?
  15. KVM - qcow2 和 raw 格式对比
  16. python识别手写数字字体_基于tensorflow框架对手写字体MNIST数据集的识别
  17. oracle模板数据文件,Oracle EBS如何通过命令上传XML/BI Publisher数据定义文件和模板文件...
  18. 使用github+Hexo人人都能拥有一个美美的博客
  19. 使用Charles抓取https请求
  20. 64位系统魔兽服务器不兼容,魔兽世界Win7下出现不兼容问题的解决办法

热门文章

  1. Win10桌面我的电脑等图标设置
  2. 2023-03-13 递归详解
  3. 今日更新【西北农林科技大学】初试复试资料分享(附考研群)
  4. 随笔 丰满的理想战胜不了骨干的现实
  5. 新年愿望——天下无贼
  6. 端口被java占用不释放8090_处理服务器端口被占用问题
  7. 吴天栋c语言教程,语言教学论文,关于教学语言的特点和要求相关参考文献资料-免费论文范文...
  8. IEEEtran模板 修改默认作者上标
  9. 人人都会设计模式---装饰模式--Decorator
  10. 2015061401 - 自我分析