编辑片段中的列表视图对象
Posted
技术标签:
【中文标题】编辑片段中的列表视图对象【英文标题】:Editing listview objects in fragments 【发布时间】:2021-11-16 08:50:29 【问题描述】:我开始使用 android studio,我正在尝试创建一个学生列表和他们各自的国籍,并能够添加/编辑。 这是我的班级对象 Student
package com.example.simpleparadox.studentList;
import java.io.Serializable;
public class City implements Serializable
private String Sname;
private String nationality;
City(String Sname, String nationality)
this.Sname=name;
this.nationality=nationality;
public void setName(String Sname)
this.Sname = Sname;
public void nationality(String nationality)
this.nationality = nationality;
String getSname()
return this.Sname;
String getNationality()
return this.nationality;
这是添加/编辑学生姓名和国籍的片段
public class AddStudentFragment extends DialogFragment
private EditText sName;
private EditText nationlaity;
private OnFragmentInteractionListener listener;
public interface OnFragmentInteractionListener
void onOkPressed(City newCity);
@Override
public void onAttach(Context context)
super.onAttach(context);
if(context instanceof OnFragmentInteractionListener)
listener=(OnFragmentInteractionListener) context;
else
throw new RuntimeException(context.toString()+"must implement OnFragmentInteractionListener");
static AddStudentFragment newInstance(Student student)
Bundle args=new Bundle();
args.putSerializable("student",student);
AddStudentFragment fragment=new AddStudentFragment();
fragment.setArguments(args);
return fragment;
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) //
//Inflate the layout for this fragment
View view= LayoutInflater.from(getActivity()).inflate(R.layout.add_city_fragment_layout,null);
sName=view.findViewById(R.id.student_name_editText);
nationality=view.findViewById(R.id.nationality_editText);
AlertDialog.Builder builder=new AlertDialog.Builder(getContext());
return builder
.setView(view)
.setTitle("Add student")
.setNegativeButton("Cancel",null)
.setPositiveButton("OK",new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialogInterface,int i)
String newName=sName.getText().toString();
String newNationality=nationality.getText().toString();
listener.onOkPressed(new Student(newName,newNationality));
).create();
我的目标是创建一个多功能按钮,如果我只需按下“添加”按钮就可以添加学生。但是如果我从学生列表视图中选择一个项目然后按下按钮,它应该编辑现有学生的姓名和国籍。我已经成功创建了第一个函数,但我被困在了编辑部分。具体来说,我不知道如何从 Bundle 中检索现有的学生对象。谁能帮帮我?
【问题讨论】:
【参考方案1】:-
您需要为学生定义 ID。
在
OnFragmentInteractionListener
界面中,您需要有两个函数addStudent(Student student)
和editStudent(Student student)
。
在AddStudentFragment
中,定义Student selectedStuden
变量
onStart
,从Bundle
获取学生并设置为selectedStudent
。如果为 null,则当您 add
新 Student
时。否则,当你 edit
和 Student
时。
onCreateDialog,如果selectedStudent != null
,设置学生姓名和国籍为TexView
。
onClick
:
public void onClick(DialogInterface dialogInterface,int i)
if seletedStuden == null
String newName=sName.getText().toString();
String newNationality=nationality.getText().toString();
listener.addStudent(new Student(newName,newNationality));
else
seletedStuden.setName(sName.getText().toString());
seletedStuden.setNationality(nationality.getText().toString())
listener.editStudent(seletedStuden);
-
基于
Student ID
更新到Student List
【讨论】:
以上是关于编辑片段中的列表视图对象的主要内容,如果未能解决你的问题,请参考以下文章