我在自定义列表视图中添加了一个复选框。此列表是一个任务列表,当您点击时将允许用户在另一个活动中编辑任务,这已经实现。
选中后,我要使此复选框将任务的状态更改为“完成”。我可以通过将数据传递到活动并在其中进行更改来做到这一点,但是我不知道从这个角度来看如何做。
我尝试实现此功能,但是它不起作用,并且没有错误。它还取消了选择列表项(任务)进行编辑或删除的功能。
如果我的结构或提问不正确,请告诉我。
复选框方法
this.tasks.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final DatabaseReference checkBoxStatus = FirebaseDatabase.getInstance().getReference("Task List/" + tasks.get(position)).child("Status");
CheckBox completeCheckBox = view.findViewById(R.id.checkBox);
completeCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
ValueEventListener checkedBox = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
dataSnapshot.getChildren(); {
checkBoxStatus.setValue("Complete");
}//getChildren
}//OnDataChange
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}//OnCancelled
};
checkBoxStatus.addListenerForSingleValueEvent(checkedBox);
}//if
}//OnCheckedChanged
});
}//OnItemClick
});
以列表方式查看并点击任务
this.tasks.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
final DatabaseReference listClick = FirebaseDatabase.getInstance().getReference("Task List/" + tasks.get(position));
final Intent intent = new Intent(task_list.this, edit_task.class);
ValueEventListener selectItem = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
dataSnapshot.getChildren();
{
String key = tasks.get(position);
String taskName = dataSnapshot.child("Name").getValue(String.class);
String date = dataSnapshot.child("Date").getValue(String.class);
String assignee = dataSnapshot.child("Assigned to").getValue(String.class);
String type = dataSnapshot.child("Type").getValue(String.class);
String status = dataSnapshot.child("Status").getValue(String.class);
String descrip = dataSnapshot.child("Description").getValue(String.class);
intent.putExtra("passTaskName", taskName);
intent.putExtra("passDate", date);
intent.putExtra("passAssigned", assignee);
intent.putExtra("passType", type);
intent.putExtra("passStatus", status);
intent.putExtra("passDescription", descrip);
intent.putExtra("passKey", key);
startActivity(intent);
}//getChildren
task_list.this.tasks.setAdapter(arrayAdapter);
}//OnDataChange
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}//OnCancelled
};
listClick.addListenerForSingleValueEvent(selectItem);
}//OnItemClick
});