Java 通过单击RecyclerView和SQLite数据库中的图像删除项目

Java 通过单击RecyclerView和SQLite数据库中的图像删除项目,java,android,sqlite,android-recyclerview,adapter,Java,Android,Sqlite,Android Recyclerview,Adapter,我正在用SQLite和RecyclerView创建一个todo应用程序,但是我在删除一个点击图像的任务时遇到了问题,这就是我的ivDelete。我想删除已完成的任务。你知道怎么删除吗?任何帮助都将不胜感激 这是我的主要活动: public class MainActivity extends AppCompatActivity { Button btn_tasks,btn_reminders,btn_about; ImageView img_addtask; Recycl

我正在用SQLite和RecyclerView创建一个todo应用程序,但是我在删除一个点击图像的任务时遇到了问题,这就是我的ivDelete。我想删除已完成的任务。你知道怎么删除吗?任何帮助都将不胜感激

这是我的主要活动:

public class MainActivity extends AppCompatActivity
{
    Button btn_tasks,btn_reminders,btn_about;
    ImageView img_addtask;
    RecyclerView contactView;
    DBHelper dbHelper;
    CustomAdapter mAdapter;
    private ArrayList<TaskClass> allContacts;
    @Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn_tasks = findViewById(R.id.btn_task);
    btn_reminders = findViewById(R.id.btn_reminder);
    btn_about = findViewById(R.id.btn_about);
    img_addtask = findViewById(R.id.imageView);
    dbHelper = new DBHelper(this);
    contactView = findViewById(R.id.list);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    contactView.setLayoutManager(layoutManager);
    contactView.setHasFixedSize(true);
    allContacts = new ArrayList<>();
    allContacts = dbHelper.getTaskList();

    loadTaskList();

img_addtask.setOnClickListener(new View.OnClickListener() 
{
    @Override
    public void onClick(View view) 
    {
        addTask();
    }
 });
 btn_reminders.setOnClickListener(new View.OnClickListener() 
 {
     @Override
     public void onClick(View view) 
     {
         addReminder();
     }
   });

}

private void loadTaskList()
{
    ArrayList<TaskClass> taskList = dbHelper.getTaskList();
    if(mAdapter == null)
    {
        contactView.setVisibility(View.VISIBLE);
        mAdapter = new CustomAdapter(this,allContacts);
        contactView.setAdapter(mAdapter);
    }
    else
    {
        contactView.setVisibility(View.GONE);
        Toast.makeText(this, "There is no task in the database. Start 
adding now", Toast.LENGTH_LONG).show();
    }
}

private void addTask()
{
    Intent intent = new Intent(this,AddTask.class);
    startActivity(intent);
}
private void addReminder()
{
    Intent intent = new Intent(this,AddReminder.class);
    startActivity(intent);
}
}

您可以在适配器的onBindViewHolder中的ivDelete上放置一个侦听器,然后 从数据库中按id删除任务。您必须在DBHelper类上创建一个方法来执行此操作

viewHolder.ivDelete.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Call method to delete task

    }
});

实际上我是Android开发新手,你能指导我怎么做吗?
    public CustomViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
    {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_layout, parent, false);
        return new CustomViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull CustomViewHolder viewHolder, final int position)
    {
        viewHolder.txtTask.setText(taskClass.get(position).getTaskName());
        viewHolder.txtDate.setText(taskClass.get(position).getTaskDate());
    }

    @Override
    public int getItemCount() {
        return taskClass.size();
    }
    public class CustomViewHolder extends RecyclerView.ViewHolder
    {
        TextView txtTask,txtDate;
        ImageView ivDelete;

        public CustomViewHolder(View itemView)
        {
            super(itemView);
            txtTask = itemView.findViewById(R.id.task_title);
            txtDate = itemView.findViewById(R.id.task_date);
            ivDelete = itemView.findViewById(R.id.ivDelete);
        }
    }
viewHolder.ivDelete.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Call method to delete task

    }
});