Я добавляю «Сотрудник» в базу данных SQLite. При добавлении сотрудника в базу данных пользователь должен заполнить поля, относящиеся к сотруднику, например, имя, фамилия, зарплата и т. Д. c. У сотрудника есть несколько атрибутов, таких как «квалификация» и «отдел». Эти атрибуты могут иметь несколько сотрудников, поэтому, когда пользователь заполняет все поля атрибутами, ему предлагается добавить другое поле, например, поле «навык». чтобы добавить еще один «навык», в такое поле «навык» вы можете добавить столько, сколько хотите, и я реализовал его с помощью RecyclerView. Но проблема заключается в следующем: когда пользователь хочет добавить другое поле «навык», появляется пустой EditText, и пользователь заполняет это поле данными, но я не знаю, как сохранить эту строку, потому что когда вы нажимаете добавить навык, пустая строка передается на адаптер, затем пользователь заполняет эту строку, но как сохранить эту строку в списке, который содержит адаптер, я не могу понять
пожалуйста, смотрите GIF
Это класс адаптера
public class AdapterAddSkill extends RecyclerView.Adapter<AdapterAddSkill.MyViewHolderAddEmployee> {
private ArrayList<String> skillsList;
private Context context;
public AdapterAddSkill(ArrayList<String> skillsList, Context context) {
this.skillsList = skillsList;
this.context = context;
}
@NonNull
@Override
public MyViewHolderAddEmployee onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_skill, parent, false);
return new MyViewHolderAddEmployee(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolderAddEmployee holder, final int position) {
holder.closeCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skillsList.remove(position);
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return skillsList.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
public static class MyViewHolderAddEmployee extends RecyclerView.ViewHolder {
private ImageButton closeCard;
private EditText skillEditText;
public MyViewHolderAddEmployee(@NonNull View itemView) {
super(itemView);
closeCard = itemView.findViewById(R.id.deleteSkillCard);
skillEditText = itemView.findViewById(R.id.skillText);
}
}
}
Вот действие, в котором пользователь заполняет данные о сотруднике и добавляет их в базу данных
public class AddEmploy extends AppCompatActivity {
private EditText nameEditText, lastNameEditText, employeeIdEditText,
salaryEditText, departmentEditText, skillEditText;
private ArrayList<String> skillsList = new ArrayList<>();
private ArrayList<String> departmentsList = new ArrayList<>();
private AdapterAddSkill adapterAddSkill;
private RecyclerView skillRecyclerView;
private AdapterAddDepartment adapterAddDepartment;
private RecyclerView departmentRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_employ);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
nameEditText = findViewById(R.id.name);
lastNameEditText = findViewById(R.id.lastName);
employeeIdEditText = findViewById(R.id.employeeId);
salaryEditText = findViewById(R.id.salary);
departmentEditText = findViewById(R.id.department);
skillEditText = findViewById(R.id.skill);
skillRecyclerView = findViewById(R.id.rv_skill);
departmentRecyclerView = findViewById(R.id.rv_department);
adapterAddSkill = new AdapterAddSkill(skillsList, this);
adapterAddDepartment = new AdapterAddDepartment(departmentsList, this);
skillRecyclerView.setLayoutManager(new LinearLayoutManager(this));
departmentRecyclerView.setLayoutManager(new LinearLayoutManager(this));
skillRecyclerView.setAdapter(adapterAddSkill);
departmentRecyclerView.setAdapter(adapterAddDepartment);
}
public void onClickBtn(View view) {
switch (view.getId()) {
case R.id.addDepartmentText:
departmentsList.add("");
adapterAddDepartment.notifyDataSetChanged();
break;
case R.id.addSkillText:
skillsList.add("");
adapterAddSkill.notifyDataSetChanged();
break;
case R.id.saveEmployee_info:
addEmployToDatabase();
addDepartmentToDatabase();
addSkillToDatabase();
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
private void addEmployToDatabase() {
String employeeId = employeeIdEditText.getText().toString();
String name = nameEditText.getText().toString();
String lastName = lastNameEditText.getText().toString();
String salary = salaryEditText.getText().toString();
MyQuery.addEmployee(new Employ(employeeId, name, lastName, salary));
}
private void addSkillToDatabase() {
String employeeId = employeeIdEditText.getText().toString();
String skill = skillEditText.getText().toString();
MyQuery.addSkill(new Skill(employeeId, skill));
for (int i = 0; i < skillsList.size(); i++) {
MyQuery.addSkill(new Skill(employeeIdEditText.getText().toString()
, skillsList.get(i)));
}
}
private void addDepartmentToDatabase() {
String department = departmentEditText.getText().toString();
String employeeId = employeeIdEditText.getText().toString();
MyQuery.addDepartment(new Department(employeeId, department));
for (int i = 0; i < departmentsList.size(); i++) {
MyQuery.addDepartment(new Department(employeeIdEditText.getText().toString(),
departmentsList.get(i)));
}
}
private void showAllEmployees() {
List<Employ> employs = MyQuery.getAllEmployees();
for (int i = 0; i < employs.size(); i++) {
Log.i(".......Employees", employs.get(i).toString());
}
}
private void showAllSkills() {
List<Skill> skills = MyQuery.getAllSkills();
for (int i = 0; i < skills.size(); i++) {
Log.i("......Skills", skills.get(i).toString());
}
}
private void showAllDepartments() {
List<Department> departments = MyQuery.getAllDepartments();
for (int i = 0; i < departments.size(); i++) {
Log.i(".........Departments", departments.get(i).toString());
}
}
}