Android Studio 大作业--学生信息管理系统
创始人
2025-01-16 09:04:42
0

 欢迎光临:

古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼
---------------🍎------------🍉--------------
🐼学编程的bird的博客,邀您一起学习🦌
----------------🥕------------🥭-------------

😊很高兴你打开了这篇博客。
★如有疑问不解或者说有想问的地方,都可以在下方评论留言,博主看到会尽快回复的。
★当然,期待你的点赞+关注哦!

★本人微信:wxid_v28nw5cckzz622,若需要帮助,请备注来源+意图
————————————————
版权声明:本文为CSDN博主「学编程的bird」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:Android Studio 大作业--学生信息管理系统-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_64069699/article/details/135324803


内容大概:

简易学生信息管理系统项目需求,大致需要以下Java文件和XML布局文件:  Java文件:  Student 类(实体类):用于存储学生信息。 StudentDBHelper 类(数据库操作类):继承自SQLiteOpenHelper,负责创建表、插入、删除、更新和查询学生数据。 StudentListAdapter 类(RecyclerView Adapter):适配器类,用于在“学生列表”模块展示学生数据。 StudentListFragment 类(Fragment):实现学生列表界面功能,包含RecyclerView及其Adapter的初始化等。 AddStudentFragment 类(Fragment):实现添加学生界面功能,包含EditText输入框、Button提交按钮、ImageView头像选择等。 SearchStudentFragment 类(Fragment):实现查询学生界面功能,包含EditText输入框、CheckBox或RadioButton查询条件选择、查询结果展示列表的初始化等。 SearchStudentListAdapter 类(RecyclerView Adapter):适配器类,用于在“搜索”模块展示学生数据。 MainActivity:用于初始化底部导航栏与ViewPager2,并管理各个Fragment。  XML布局文件:  activity_main.xml:主Activity布局文件,包含ViewPager2和TabLayout等控件。 fragment_student_list.xml:学生列表Fragment的布局文件,包含RecyclerView等控件。 fragment_add_student.xml:添加学生Fragment的布局文件,包含姓名、学号、专业等EditText输入框以及上传或选择图片的ImageView和提交按钮等控件。 item_student1.xml:RecyclerView中单个学生项的布局文件,包含显示学生信息的各种TextView、ImageView等控件。 fragment_search_student.xml:查询学生Fragment的布局文件,包含查询输入框、查询条件选择控件以及查询结果展示的ListView或RecyclerView控件。 item_student2.xml:RecyclerView中单个学生项的布局文件,包含显示学生信息的各种TextView、ImageView等控件。 dialog_delete_confirm.xml:删除确认AlertDialog或PopupWindow的布局文件,包含提示文字和确认/取消按钮。 bottom_navigation_menu.xml:底部导航栏。 

 使用的控件:

此APP中包含以下控件:  Button、TextView、EditText、ImageView、Toast、Activity 跳转和传值、ViewPager2+Fragment 底部导航  PopupWindow & AlertDialog、数据库  RadioButton、CheckBox、返回值、RecyclerView 

整体架构:


 示例展示:

学生列表

 添加

 搜索


源代码: 

JAVA代码

MainActivity

package com.example.myfinalwork;  import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.appcompat.widget.Toolbar; import android.os.Bundle; import android.view.MenuItem; import android.view.Menu; import android.widget.Toast;  import com.google.android.material.bottomnavigation.BottomNavigationView; import com.example.myfinalwork.StudentListRefreshListener;  import java.util.ArrayList; import java.util.List;  public class MainActivity extends AppCompatActivity implements StudentListRefreshListener {      private ViewPager2 viewPager;     private BottomNavigationView bottomNavigationView;     private List fragmentsList;     private MenuItem lastSelectedMenuItem;     private StudentListFragment studentListFragment; // 新增变量      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          // 初始化ViewPager2和BottomNavigationView         viewPager = findViewById(R.id.view_pager);         setupViewPager();          // 在这里找到并保存StudentListFragment的引用         for (Fragment fragment : fragmentsList) {             if (fragment instanceof StudentListFragment) {                 studentListFragment = (StudentListFragment) fragment;                 break;             }         }          bottomNavigationView = findViewById(R.id.bottom_navigation_view);         bottomNavigationView.setOnNavigationItemSelectedListener(navigationItemSelectedListener());         bottomNavigationView.setSelectedItemId(R.id.action_student_list);     }      @Override     public void onStudentListRefresh() {         if (studentListFragment != null) {             studentListFragment.refreshStudentList();         }     }      private BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener() {         return new BottomNavigationView.OnNavigationItemSelectedListener() {             @Override             public boolean onNavigationItemSelected(@NonNull MenuItem item) {                 if (item.getItemId() == R.id.action_student_list) {                     viewPager.setCurrentItem(0);                 } else if (item.getItemId() == R.id.action_add_student) {                     viewPager.setCurrentItem(1);                 } else if (item.getItemId() == R.id.action_search_student) {                     viewPager.setCurrentItem(2);                 }                 lastSelectedMenuItem = item;                 return true;             }         };     }      private void setupViewPager() {         fragmentsList = new ArrayList<>();         studentListFragment = new StudentListFragment(); // 修改:直接使用类级别的变量         AddStudentFragment addStudentFragment = new AddStudentFragment();         SearchStudentFragment searchStudentFragment = new SearchStudentFragment();          // 为AddStudentFragment设置一个接口回调以通知MainActivity刷新列表         addStudentFragment.setStudentListRefreshListener(this);          fragmentsList.add(studentListFragment);         fragmentsList.add(addStudentFragment);         fragmentsList.add(searchStudentFragment);          viewPager.setAdapter(new FragmentStateAdapter(this) {             @NonNull             @Override             public Fragment createFragment(int position) {                 return fragmentsList.get(position);             }              @Override             public int getItemCount() {                 return fragmentsList.size();             }         });         viewPager.setUserInputEnabled(false); // 可选:禁用手动滑动切换页面     }      @Override     public boolean onCreateOptionsMenu(Menu menu) {         getMenuInflater().inflate(R.menu.bottom_navigation_menu, menu);         return true;     } }

 Student类

package com.example.myfinalwork;  public class Student {     private String id;     private String name;     private String major;     private boolean selected; // 添加一个布尔变量来表示学生是否被选中      public Student(String id, String name, String major) {         this.id = id;         this.name = name;         this.major = major;         this.selected = false; // 初始化时默认未选中     }      public Student() {      }      // Getters and Setters     public String getId() {         return id;     }      public void setId(String id) {         this.id = id;     }      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public String getMajor() {         return major;     }      public void setMajor(String major) {         this.major = major;     }      // 新增isSelected()和setSelected()方法     public boolean isSelected() {         return selected;     }      public void setSelected(boolean selected) {         this.selected = selected;     }      @Override     public String toString() {         return "Student{" +                 "id='" + id + '\'' +                 ", name='" + name + '\'' +                 ", major='" + major + '\'' +                 ", selected=" + selected +                 '}';     } }

 StudentDBHelper类

package com.example.myfinalwork;  import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;  import java.util.ArrayList; import java.util.List;  public class StudentDBHelper extends SQLiteOpenHelper {     // 数据库名称     private static final String DATABASE_NAME = "StudentManager.db";     // 数据库版本号,每次更新数据库结构时需要增加     private static final int DATABASE_VERSION = 1;      // 学生信息表名     public static final String TABLE_NAME_STUDENTS = "students";      // 表列名定义     public static final String COLUMN_ID = "id";     public static final String COLUMN_NAME = "name";     public static final String COLUMN_MAJOR = "major";      // 创建学生信息表的SQL语句     private static final String CREATE_TABLE_STUDENTS = "CREATE TABLE " + TABLE_NAME_STUDENTS +             "(" +             COLUMN_ID + " TEXT PRIMARY KEY," +             COLUMN_NAME + " TEXT NOT NULL," +             COLUMN_MAJOR + " TEXT NOT NULL" +             ")";      public StudentDBHelper(Context context) {         super(context, DATABASE_NAME, null, DATABASE_VERSION);     }      @Override     public void onCreate(SQLiteDatabase db) {         db.execSQL(CREATE_TABLE_STUDENTS);     }      @Override     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {         // 在数据库版本升级时,可以在此处添加数据迁移逻辑或者删除旧表重建新表         db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME_STUDENTS);         onCreate(db);     }      /**      * 一个简单的方法用于将学生信息插入数据库,具体实现由StudentDBHelper提供      * @param student 要插入的学生对象      */     public void insertStudent(Student student) {         SQLiteDatabase db = this.getWritableDatabase();         ContentValues values = new ContentValues();         values.put(COLUMN_ID, student.getId());         values.put(COLUMN_NAME, student.getName());         values.put(COLUMN_MAJOR, student.getMajor());          db.insert(TABLE_NAME_STUDENTS, null, values);         db.close(); // 关闭数据库连接     }      /**      * 根据查询条件搜索学生      * @param query 搜索关键词      * @param searchBy 搜索依据字段("name" 或 "id" 或 "major")      * @return 匹配到的学生列表      */     public List searchStudents(String query, String searchBy) {         List studentList = new ArrayList<>();         SQLiteDatabase db = this.getWritableDatabase();         Cursor cursor;          if (searchBy.equals("name")) {             cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME_STUDENTS +                     " WHERE " + COLUMN_NAME + " LIKE ?", new String[]{"%" + query + "%"});         } else if (searchBy.equals("id")) {             cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME_STUDENTS +                     " WHERE " + COLUMN_ID + " LIKE ?", new String[]{"%" + query + "%"});         } else if (searchBy.equals("major")) {             cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME_STUDENTS +                     " WHERE " + COLUMN_MAJOR + " LIKE ?", new String[]{"%" + query + "%"});         } else {             throw new IllegalArgumentException("Invalid searchBy field");         }          if (cursor.moveToFirst()) {             do {                 Student student = new Student();                 int idColumnIndex = cursor.getColumnIndex(COLUMN_ID);                 int nameColumnIndex = cursor.getColumnIndex(COLUMN_NAME);                 int majorColumnIndex = cursor.getColumnIndex(COLUMN_MAJOR);                  if (idColumnIndex >= 0) {                     student.setId(cursor.getString(idColumnIndex));                 }                 if (nameColumnIndex >= 0) {                     student.setName(cursor.getString(nameColumnIndex));                 }                 if (majorColumnIndex >= 0) {                     student.setMajor(cursor.getString(majorColumnIndex));                 }                  // 只有当所有必要的字段都获取成功时才添加到列表                 if (student.getId() != null && student.getName() != null && student.getMajor() != null) {                     studentList.add(student);                 }              } while (cursor.moveToNext());         }          cursor.close();         db.close();          return studentList;     }     /**      * 获取所有学生信息      * @return 所有的学生列表      */     @SuppressLint("Range")     public List getAllStudents() {         List studentList = new ArrayList<>();         SQLiteDatabase db = this.getReadableDatabase();         Cursor cursor = db.query(TABLE_NAME_STUDENTS, null, null, null, null, null, null);          if (cursor.moveToFirst()) {             do {                 Student student = new Student();                 student.setId(cursor.getString(cursor.getColumnIndex(COLUMN_ID)));                 student.setName(cursor.getString(cursor.getColumnIndex(COLUMN_NAME)));                 student.setMajor(cursor.getString(cursor.getColumnIndex(COLUMN_MAJOR)));                 studentList.add(student);             } while (cursor.moveToNext());         }          cursor.close();         db.close();          return studentList;     }      /**      * 根据学生ID从数据库中删除学生信息      * @param studentId 要删除的学生的ID      */     public void deleteStudent(String studentId) {         SQLiteDatabase db = this.getWritableDatabase();         db.delete(TABLE_NAME_STUDENTS, COLUMN_ID + "=?", new String[]{studentId});         db.close(); // 关闭数据库连接     }  }

SearchStudentFragment类

package com.example.myfinalwork;  import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Toast;  import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView;  import java.util.ArrayList; import java.util.List;   public class SearchStudentFragment extends Fragment {      private EditText editTextSearchQuery;     private RadioButton radioButtonByName, radioButtonById,radioButtonByMajor;     private RecyclerView recyclerViewSearchResults;     private SearchListAdapter searchResultsAdapter;     private List searchedStudents;     private StudentDBHelper dbHelper;      @Override     public View onCreateView(LayoutInflater inflater, ViewGroup container,                              Bundle savedInstanceState) {         View rootView = inflater.inflate(R.layout.fragment_search_student, container, false);          // 初始化控件引用         editTextSearchQuery = rootView.findViewById(R.id.edit_text_search_query);         radioButtonByName = rootView.findViewById(R.id.radio_button_name);         radioButtonById = rootView.findViewById(R.id.radio_button_id);         radioButtonByMajor = rootView.findViewById(R.id.radio_button_major);         recyclerViewSearchResults = rootView.findViewById(R.id.recycler_view_search_results);         recyclerViewSearchResults.setLayoutManager(new LinearLayoutManager(requireContext()));          // 初始化数据库帮助类         dbHelper = new StudentDBHelper(getActivity().getApplicationContext());          // 初始化搜索结果列表的适配器         searchedStudents = new ArrayList<>();         searchResultsAdapter = new SearchListAdapter(requireContext(), searchedStudents);         recyclerViewSearchResults.setAdapter(searchResultsAdapter);           // 添加搜索按钮点击事件监听器         Button buttonSearch = rootView.findViewById(R.id.button_search);         buttonSearch.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 String query = editTextSearchQuery.getText().toString().trim();                 String searchBy;                  if (radioButtonByName.isChecked()) {                     searchBy = "name";                 } else if (radioButtonById.isChecked()) {                     searchBy = "id";                 } else if (radioButtonByMajor.isChecked()) { // 新增部分                     searchBy = "major";                 } else {                     searchBy = "name"; // 默认值,如果都没有选中则按照姓名搜索                 }                  if (!query.isEmpty()) {                     searchedStudents.clear();                     List students = dbHelper.searchStudents(query, searchBy);                     searchedStudents.addAll(students);                     searchResultsAdapter.notifyDataSetChanged();                      if (searchedStudents.isEmpty()) {                         Toast.makeText(getContext(), "未找到匹配的学生", Toast.LENGTH_SHORT).show();                     }                 } else {                     Toast.makeText(getContext(), "请输入搜索关键词", Toast.LENGTH_SHORT).show();                 }             }         });          return rootView;      }   } 

 SearchListAdapter类

package com.example.myfinalwork;          import android.content.Context;         import android.view.LayoutInflater;         import android.view.View;         import android.view.ViewGroup;         import android.widget.CheckBox;         import android.widget.TextView;          import androidx.annotation.NonNull;         import androidx.recyclerview.widget.RecyclerView;          import java.util.List;  public class SearchListAdapter extends RecyclerView.Adapter {      private Context context;     private List studentList;       public SearchListAdapter(Context context, List studentList) {         this.context = context;         this.studentList = studentList;     }          @NonNull     @Override     public StudentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {         View itemView = LayoutInflater.from(context).inflate(R.layout.item_student2, parent, false);         return new StudentViewHolder(itemView);     }      @Override     public void onBindViewHolder(@NonNull StudentViewHolder holder, int position) {         final Student currentStudent = studentList.get(position);          holder.studentName.setText(currentStudent.getName());         holder.studentId.setText(currentStudent.getId());         holder.studentMajor.setText(currentStudent.getMajor());       }      @Override     public int getItemCount() {         return studentList.size();     }      // ViewHolder 类用于缓存视图组件     public static class StudentViewHolder extends RecyclerView.ViewHolder {         TextView studentName, studentId, studentMajor;         CheckBox checkBoxSelect;          public StudentViewHolder(@NonNull View itemView) {             super(itemView);              studentName = itemView.findViewById(R.id.text_view_student_name);             studentId = itemView.findViewById(R.id.text_view_student_id);             studentMajor = itemView.findViewById(R.id.text_view_student_major);             checkBoxSelect = itemView.findViewById(R.id.check_box_select);         }     } }

 StudentListFragment类

package com.example.myfinalwork;   import android.app.AlertDialog; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast;   import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView;   import java.util.ArrayList; import java.util.List;   public class StudentListFragment extends Fragment implements StudentListAdapter.OnItemSelectedListener {       private RecyclerView recyclerView;     private StudentListAdapter adapter;     private List studentList;     private Button deleteButton;     private List selectedStudents = new ArrayList<>();     private StudentDBHelper dbHelper;     private AlertDialog deleteConfirmationDialog;      @Override     public View onCreateView(LayoutInflater inflater, ViewGroup container,                              Bundle savedInstanceState) {         // 加载fragment布局         View rootView = inflater.inflate(R.layout.fragment_student_list, container, false);          // 初始化数据库助手         dbHelper = new StudentDBHelper(requireContext());          // 初始化RecyclerView和Adapter         recyclerView = rootView.findViewById(R.id.recycler_view_students);         recyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));          // 这里可以填充或从数据库加载学生数据         // 初始化数据列表         studentList = new ArrayList<>();         studentList = dbHelper.getAllStudents();          // 创建并设置Adapter         adapter = new StudentListAdapter(requireContext(), studentList);         adapter.setOnItemSelectedListener(this); // 设置选择监听器         recyclerView.setAdapter(adapter);          // 获取并设置删除按钮点击事件         deleteButton = rootView.findViewById(R.id.button_delete);         deleteButton.setOnClickListener(v -> showDeleteConfirmationDialog());          // 获取并设置刷新按钮点击事件         Button refreshButton = rootView.findViewById(R.id.button_refresh);         refreshButton.setOnClickListener(v -> {              refreshStudentList();              Toast.makeText(requireContext(), "学生列表已刷新", Toast.LENGTH_SHORT).show();         });           return rootView;     }      // 显示删除确认对话框     private void showDeleteConfirmationDialog() {         if (!selectedStudents.isEmpty()) {             AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());             View dialogView = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_delete_confirm, null);              Button btnCancel = dialogView.findViewById(R.id.button_cancel);             Button btnDelete = dialogView.findViewById(R.id.button_delete);              btnCancel.setOnClickListener(v -> deleteConfirmationDialog.dismiss());             btnDelete.setOnClickListener(v -> {                 for (Student student : selectedStudents) {                     dbHelper.deleteStudent(student.getId()); // 从数据库中删除学生                     studentList.remove(student); // 从列表中移除学生                 }                 selectedStudents.clear(); // 清空已删除的学生列表                 adapter.notifyDataSetChanged(); // 刷新RecyclerView                  deleteConfirmationDialog.dismiss();                 Toast.makeText(requireContext(), "删除成功", Toast.LENGTH_SHORT).show();             });              deleteConfirmationDialog = builder.setView(dialogView)                     .setTitle("删除确认")                     .create();             deleteConfirmationDialog.show();         } else {             Toast.makeText(requireContext(), "请先选择要删除的学生", Toast.LENGTH_SHORT).show();         }     }      @Override     public void onItemSelected(Student student, boolean selected) {         if (selected) {             selectedStudents.add(student);         } else {             selectedStudents.remove(student);         }     }      public void refreshStudentList() {         // 从数据库重新获取学生数据         studentList.clear(); // 清空现有数据         studentList.addAll(dbHelper.getAllStudents()); // 将新数据添加到studentList         adapter.notifyDataSetChanged(); // 刷新RecyclerView的数据     }  }

StudentListAdapter类

package com.example.myfinalwork;  import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.TextView;  import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView;  import java.util.List;  public class StudentListAdapter extends RecyclerView.Adapter {      private Context context;     private List studentList;     private OnItemSelectedListener listener;      public StudentListAdapter(Context context, List studentList) {         this.context = context;         this.studentList = studentList;     }      // 添加一个接口,用于监听选择事件     public interface OnItemSelectedListener {         void onItemSelected(Student student, boolean selected);     }      public void setOnItemSelectedListener(OnItemSelectedListener listener) {         this.listener = listener;     }      @NonNull     @Override     public StudentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {         View itemView = LayoutInflater.from(context).inflate(R.layout.item_student1, parent, false);         return new StudentViewHolder(itemView);     }      @Override     public void onBindViewHolder(@NonNull StudentViewHolder holder, int position) {         final Student currentStudent = studentList.get(position);          holder.studentName.setText(currentStudent.getName());         holder.studentId.setText(currentStudent.getId());         holder.studentMajor.setText(currentStudent.getMajor());          holder.checkBoxSelect.setChecked(currentStudent.isSelected());         holder.checkBoxSelect.setOnCheckedChangeListener((buttonView, isChecked) -> {             if (listener != null) {                 currentStudent.setSelected(isChecked);                 listener.onItemSelected(currentStudent, isChecked);             }         });     }      @Override     public int getItemCount() {         return studentList.size();     }      // ViewHolder 类用于缓存视图组件     public static class StudentViewHolder extends RecyclerView.ViewHolder {         TextView studentName, studentId, studentMajor;         CheckBox checkBoxSelect;          public StudentViewHolder(@NonNull View itemView) {             super(itemView);              studentName = itemView.findViewById(R.id.text_view_student_name);             studentId = itemView.findViewById(R.id.text_view_student_id);             studentMajor = itemView.findViewById(R.id.text_view_student_major);             checkBoxSelect = itemView.findViewById(R.id.check_box_select);         }     } }

AddStudentFragment类

package com.example.myfinalwork;  import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;  import androidx.annotation.NonNull; import androidx.fragment.app.Fragment;  import java.util.List;  public class AddStudentFragment extends Fragment {      private EditText editTextName, editTextId, editTextMajor;     private Button buttonSubmit;     private StudentDBHelper dbHelper;     private StudentListRefreshListener refreshListener; // 移除MainActivity前缀,因为它是一个接口引用      public void setStudentListRefreshListener(StudentListRefreshListener listener) {         this.refreshListener = listener;     }      @Override     public View onCreateView(LayoutInflater inflater, ViewGroup container,                              Bundle savedInstanceState) {         View rootView = inflater.inflate(R.layout.fragment_add_student, container, false);          // 初始化控件引用         editTextName = rootView.findViewById(R.id.edit_text_name);         editTextId = rootView.findViewById(R.id.edit_text_student_id);         editTextMajor = rootView.findViewById(R.id.edit_text_major);         buttonSubmit = rootView.findViewById(R.id.button_submit);          // 初始化数据库帮助类         dbHelper = new StudentDBHelper(getActivity().getApplicationContext());          // 获取宿主Activity的引用并设置监听器(已在setupViewPager()中完成)          // 添加提交按钮点击事件监听器         buttonSubmit.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 String name = editTextName.getText().toString().trim();                 String id = editTextId.getText().toString().trim();                 String major = editTextMajor.getText().toString().trim();                  if (!name.isEmpty() && !id.isEmpty() && !major.isEmpty()) {                     Student newStudent = new Student(id, name, major);                     dbHelper.insertStudent(newStudent);                      editTextName.setText("");                     editTextId.setText("");                     editTextMajor.setText("");                      Toast.makeText(getContext(), "学生信息已添加", Toast.LENGTH_SHORT).show();                      // 添加完学生后,通知宿主Activity刷新学生列表                     if (refreshListener != null) {                         refreshListener.onStudentListRefresh();                     }                  } else {                     Toast.makeText(getContext(), "请确保所有字段都已填写", Toast.LENGTH_SHORT).show();                 }             }         });          return rootView;     } }

 StudentListRefreshListener接口

package com.example.myfinalwork;  public interface StudentListRefreshListener {     void onStudentListRefresh(); } 

XML布局文件 

activity_main.xml

               

dialog_delete_confirm.xml 

                                            

 fragment_add_student.xml

                                                        

 fragment_search_student.xml

                                                                                                                    

 fragment_student_list.xml

                                                           

item_student1.xml

                                               

 item_student2.xml

                                          

 bottom_navigation_menu.xml

                 

相关内容

热门资讯

九次机器人wpk长期盈利打法教... 九次机器人wpk长期盈利打法教学(插件)wpk线上德州俱乐部(2025已更新)(哔哩哔哩);是一款可...
三次德州wpk微扑克真的有辅助... 您好,微扑克这款游戏可以开挂的,确实是有挂的,需要了解加微【485275054】很多玩家在这款游戏中...
必看攻略(智星菠萝)软件透明挂... 必看攻略(智星菠萝)软件透明挂(辅助挂)外挂透明挂神器(2020已更新)(哔哩哔哩);德扑锦标赛是一...
六次大厅房wpk微扑克辅助是真... 六次大厅房wpk微扑克辅助是真的的(工具)wpk微扑克辅助透视(2021已更新)(哔哩哔哩);微扑克...
4次苹果版微扑克辅助安卓版本(... 4次苹果版微扑克辅助安卓版本(开挂)微扑克真的有挂的(2020已更新)(哔哩哔哩)是一款可以让一直输...
九分钟了解(扑克之城)软件透明... 您好,扑克之城这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款游戏...
3次软件德州wpk辅助真的假的... 3次软件德州wpk辅助真的假的(开挂)wepoke有插件辅助的(2023已更新)(哔哩哔哩)是一款可...
2020版检测微扑克微乐辅助(... 2020版检测微扑克微乐辅助(工具)wepoke辅助挂有的(2020已更新)(哔哩哔哩);是一款可以...
攻略辅助(约局吧)软件透明挂(... 攻略辅助(约局吧)软件透明挂(辅助挂)透明辅助挂工具(2022已更新)(哔哩哔哩);一、约局吧有挂的...
6分钟长期wpk微扑克最新辅助... 6分钟长期wpk微扑克最新辅助(软件)wepoke脚本(2022已更新)(哔哩哔哩);详细微扑克攻略...