Java 通过单击RecyclerView和SQLite数据库中的图像删除项目
我正在用SQLite和RecyclerView创建一个todo应用程序,但是我在删除一个点击图像的任务时遇到了问题,这就是我的ivDelete。我想删除已完成的任务。你知道怎么删除吗?任何帮助都将不胜感激 这是我的主要活动: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
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
}
});