У меня есть список задач, которые я отображаю внутри ListView.Внутри каждого элемента ListView есть CheckBox с заголовком задачи и TextView, отображающим дату выполнения.У меня возникают проблемы с удалением элемента из списка, когда установлен флажок внутри элемента ListView.
На данный момент у меня есть OnCheckChangedListener, который установлен для CheckBox внутри адаптера.для просмотра списка.Это устанавливается в методе getView ().Когда флажок установлен, задача удаляется из ArrayList, а новый CustomAdapter создается и применяется к списку просмотра с использованием нового taskList.Это не сработало, поэтому я добавил обработчик для внесения этих изменений в поток пользовательского интерфейса.Все еще не работает.Из журналов я могу сказать, что слушатель вызывается, но элементы не удаляются.
ArrayList<Task> taskList;
Context mContext;
ListView listView;
Handler handler;
public CustomAdapter(Context mContext, ArrayList<Task> taskList){
this.mContext = mContext;
this.taskList = taskList;
this.handler = new Handler(mContext.getMainLooper());
}
@Override
public int getCount() {
return taskList.size();
}
@Override
public Object getItem(int position) {
return taskList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = LayoutInflater.from(mContext).inflate(R.layout.listview_item,parent,false);
}
final View row = convertView;
CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.checkBoxTask);
TextView textTaskDueDate = (TextView)convertView.findViewById(R.id.textTaskDueDate);
checkBox.setText(taskList.get(position).getTask());
textTaskDueDate.setText("Due Date: " + taskList.get(position).getDueDate());
checkBox.setTag(position);
listView = parent.findViewById(R.id.listViewTasks);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
Log.i("CheckBox Listener", "Check heard");
Log.i("Button Tag", String.valueOf(buttonView.getTag()));
Log.i("taskList length before", String.valueOf(taskList.size()));
taskList.remove(buttonView.getTag());
Log.i("taskList length after", String.valueOf(taskList.size()));
notifyDataSetChanged();
}
}
});
return convertView;
}