sqlite 如何将onClick侦听器设置为RececumerView?

klr1opcd  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(221)

我想将onClick添加到recyclerView,以便将数据发回表单活动以进行更新数据处理。当此代码中没有适配器时,我如何实现onItemClickListner
Show_Employees.java:

  1. package com.example.roomdatabaseandroid;
  2. import androidx.annotation.NonNull;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. import androidx.recyclerview.widget.ItemTouchHelper;
  5. import androidx.recyclerview.widget.LinearLayoutManager;
  6. import androidx.recyclerview.widget.RecyclerView;
  7. import android.content.Intent;
  8. import android.os.Bundle;
  9. import android.view.View;
  10. import android.widget.Toast;
  11. import com.example.roomdatabaseandroid.DataModel.EmployeeDao;
  12. import com.example.roomdatabaseandroid.DataModel.EmployeeDatabase;
  13. import com.google.android.material.floatingactionbutton.FloatingActionButton;
  14. public class ShowEmployees extends AppCompatActivity {
  15. private static final int EDIT_COURSE_REQUEST = 2;
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_show_employees);
  20. RecyclerView recyclerView;
  21. FloatingActionButton fab = findViewById(R.id.idFABAdd);
  22. EmployeeDao employeeDao;
  23. fab.setOnClickListener(new View.OnClickListener() {
  24. @Override
  25. public void onClick(View v) {
  26. //starting a new activity for adding a new course and passing a constant value in it.
  27. Intent intent = new Intent(ShowEmployees.this, MainActivity.class);
  28. startActivity(intent);
  29. }
  30. });
  31. employeeDao = EmployeeDatabase.getDBInstance(this).employeeDao();
  32. recyclerView = findViewById(R.id.employeeRecyclerView);
  33. EmployeeRecycler employeeRecycler = new EmployeeRecycler(employeeDao.getAllEmployee());
  34. recyclerView.setLayoutManager(new LinearLayoutManager(this));
  35. recyclerView.setAdapter(employeeRecycler);
  36. //below method is use to add swipe to delete method for item of recycler view.
  37. new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
  38. @Override
  39. public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
  40. return false;
  41. }
  42. @Override
  43. public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
  44. //on recycler view item swiped then we are deleting the item of our recycler view.
  45. employeeDao.deleteEmployee(employeeRecycler.data.get(viewHolder.getAdapterPosition()));
  46. Toast.makeText(ShowEmployees.this, "Employee deleted", Toast.LENGTH_SHORT).show();
  47. }
  48. }).attachToRecyclerView(recyclerView);
  49. }
  50. }

Employee_Reccler.Java:

  1. package com.example.roomdatabaseandroid;
  2. import android.view.LayoutInflater;
  3. import android.view.View;
  4. import android.view.ViewGroup;
  5. import androidx.annotation.NonNull;
  6. import androidx.recyclerview.widget.RecyclerView;
  7. import com.example.roomdatabaseandroid.DataModel.DataConverter;
  8. import com.example.roomdatabaseandroid.DataModel.Employee;
  9. import java.util.List;
  10. public class EmployeeRecycler extends RecyclerView.Adapter<EmployeeViewHolder> {
  11. List<Employee> data;
  12. public EmployeeRecycler(List<Employee> employees){
  13. data = employees;
  14. }
  15. @NonNull
  16. @Override
  17. public EmployeeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  18. View view = LayoutInflater.from(parent.getContext()).inflate(
  19. R.layout.list_item_1,
  20. parent,false
  21. );
  22. return new EmployeeViewHolder(view);
  23. }
  24. @Override
  25. public void onBindViewHolder(@NonNull EmployeeViewHolder holder, int position) {
  26. Employee employee = data.get(position);
  27. holder.imageView.setImageBitmap(DataConverter.convertByteArraytoImage(employee.getImage()));
  28. holder.firstName.setText(employee.getFirstName());
  29. holder.middleName.setText(employee.getMiddleName());
  30. holder.lastName.setText(employee.getLastName());
  31. holder.dob.setText(employee.getDOB());
  32. holder.gender.setText(employee.getGender());
  33. holder.address.setText(employee.getAddress());
  34. holder.designation.setText(employee.getDesignation());
  35. holder.email.setText(employee.getEmail());
  36. holder.phoneNumber.setText(employee.getPhoneNumber());
  37. }
  38. @Override
  39. public int getItemCount() {
  40. return data.size();
  41. }
  42. }

EmployeeViewHolder.java:

  1. package com.example.roomdatabaseandroid;
  2. import android.view.View;
  3. import android.widget.ImageView;
  4. import android.widget.TextView;
  5. import androidx.annotation.NonNull;
  6. import androidx.recyclerview.widget.RecyclerView;
  7. public class EmployeeViewHolder extends RecyclerView.ViewHolder {
  8. ImageView imageView;
  9. TextView firstName,middleName,lastName,email,phoneNumber,address,designation,gender,dob;
  10. public EmployeeViewHolder(@NonNull View itemView) {
  11. super(itemView);
  12. firstName = itemView.findViewById(R.id.idTVFirstName);
  13. middleName = itemView.findViewById(R.id.idTVMiddleName);
  14. lastName = itemView.findViewById(R.id.idTVLastName);
  15. dob = itemView.findViewById(R.id.idTVDOB);
  16. address = itemView.findViewById(R.id.idTVAddress);
  17. gender = itemView.findViewById(R.id.idTVGender);
  18. designation = itemView.findViewById(R.id.idTVDesignation);
  19. email = itemView.findViewById(R.id.idTVEmail);
  20. phoneNumber = itemView.findViewById(R.id.idTVPhoneNumber);
  21. imageView = itemView.findViewById(R.id.profileImageView);
  22. }
  23. }
8wigbo56

8wigbo561#

添加接口

  1. interface AdapterItemClickListener {
  2. void onItemClickListener(Employee employee, int position)
  3. }

您的Active必须实现此接口

  1. public class ShowEmployees extends AppCompatActivity implements AdapterItemClickListener {
  2. private static final int EDIT_COURSE_REQUEST = 2;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_show_employees);
  7. RecyclerView recyclerView;
  8. FloatingActionButton fab = findViewById(R.id.idFABAdd);
  9. EmployeeDao employeeDao;
  10. fab.setOnClickListener(new View.OnClickListener() {
  11. @Override
  12. public void onClick(View v) {
  13. //starting a new activity for adding a new course and passing a constant value in it.
  14. Intent intent = new Intent(ShowEmployees.this, MainActivity.class);
  15. startActivity(intent);
  16. }
  17. });
  18. employeeDao = EmployeeDatabase.getDBInstance(this).employeeDao();
  19. recyclerView = findViewById(R.id.employeeRecyclerView);
  20. EmployeeRecycler employeeRecycler = new EmployeeRecycler(employeeDao.getAllEmployee(), this);
  21. recyclerView.setLayoutManager(new LinearLayoutManager(this));
  22. recyclerView.setAdapter(employeeRecycler);
  23. //below method is use to add swipe to delete method for item of recycler view.
  24. new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
  25. @Override
  26. public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
  27. return false;
  28. }
  29. @Override
  30. public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
  31. //on recycler view item swiped then we are deleting the item of our recycler view.
  32. employeeDao.deleteEmployee(employeeRecycler.data.get(viewHolder.getAdapterPosition()));
  33. Toast.makeText(ShowEmployees.this, "Employee deleted", Toast.LENGTH_SHORT).show();
  34. }
  35. }).attachToRecyclerView(recyclerView);
  36. }
  37. void onItemClickListener(Employee employee, int position) {
  38. //update or another job
  39. }
  40. }

和您的适配器

  1. public class EmployeeRecycler extends RecyclerView.Adapter<EmployeeViewHolder> {
  2. List<Employee> data;
  3. AdapterItemClickListener itemClickListener;
  4. public EmployeeRecycler(List<Employee> employees, AdapterItemClickListener itemClickListener){
  5. data = employees;
  6. this.itemClickListener = itemClickListener;
  7. }
  8. @NonNull
  9. @Override
  10. public EmployeeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  11. View view = LayoutInflater.from(parent.getContext()).inflate(
  12. R.layout.list_item_1,
  13. parent,false
  14. );
  15. return new EmployeeViewHolder(view);
  16. }
  17. @Override
  18. public void onBindViewHolder(@NonNull EmployeeViewHolder holder, int position) {
  19. Employee employee = data.get(position);
  20. holder.imageView.setImageBitmap(DataConverter.convertByteArraytoImage(employee.getImage()));
  21. holder.firstName.setText(employee.getFirstName());
  22. holder.middleName.setText(employee.getMiddleName());
  23. holder.lastName.setText(employee.getLastName());
  24. holder.dob.setText(employee.getDOB());
  25. holder.gender.setText(employee.getGender());
  26. holder.address.setText(employee.getAddress());
  27. holder.designation.setText(employee.getDesignation());
  28. holder.email.setText(employee.getEmail());
  29. holder.phoneNumber.setText(employee.getPhoneNumber());
  30. holder.itemView.setOnClickListener (v -> {
  31. itemClickListener.onItemClickListener(employee, position);
  32. });
  33. }
  34. @Override
  35. public int getItemCount() {
  36. return data.size();
  37. }
  38. }
展开查看全部

相关问题