/* * Copyright 2016 Realm Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.realm.examples.adapters.ui.listview; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ListAdapter; import android.widget.TextView; import java.util.HashSet; import java.util.Set; import io.realm.OrderedRealmCollection; import io.realm.RealmBaseAdapter; import io.realm.examples.adapters.R; import io.realm.examples.adapters.model.Item; class MyListAdapter extends RealmBaseAdapter<Item> implements ListAdapter { private static class ViewHolder { TextView countText; CheckBox deleteCheckBox; } private boolean inDeletionMode = false; private Set<Integer> countersToDelete = new HashSet<Integer>(); MyListAdapter(OrderedRealmCollection<Item> realmResults) { super(realmResults); } void enableDeletionMode(boolean enabled) { inDeletionMode = enabled; if (!enabled) { countersToDelete.clear(); } notifyDataSetChanged(); } Set<Integer> getCountersToDelete() { return countersToDelete; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.row, parent, false); viewHolder = new ViewHolder(); viewHolder.countText = (TextView) convertView.findViewById(R.id.textview); viewHolder.deleteCheckBox = (CheckBox) convertView.findViewById(R.id.checkBox); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } if (adapterData != null) { final Item item = adapterData.get(position); viewHolder.countText.setText(item.getCountString()); if (inDeletionMode) { viewHolder.deleteCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { countersToDelete.add(item.getId()); } }); } else { viewHolder.deleteCheckBox.setOnCheckedChangeListener(null); } viewHolder.deleteCheckBox.setChecked(countersToDelete.contains(item.getId())); viewHolder.deleteCheckBox.setVisibility(inDeletionMode ? View.VISIBLE : View.GONE); } return convertView; } }