Note that there are some explanatory texts on larger screens.

plurals
  1. POdeletion of multiple items the contextual action mode with database
    primarykey
    data
    text
    <p>ı have</p> <p>MainActivity.java</p> <pre><code>public abstract class MainActivity extends ListActivity implements LoaderManager.LoaderCallbacks&lt;Cursor&gt;, MultiChoiceModeListener { Entry entry = null; ListView todoListView; ArrayList&lt;Entry&gt; todoItems; ToDoArrayAdapter todoArrayAdapter; public int itemPosition; public long rowId; public static final int ADD_NOTE = 1; public static final int EDIT_NOTE = 2; @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.mainmenu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Take appropriate action for each action item click switch (item.getItemId()) { case R.id.add_note: Intent addIntent = new Intent(MainActivity.this, AddItem.class); startActivityForResult(addIntent, ADD_NOTE); return true; case R.id.lowPriority: return true; case R.id.mediumPriority: // refresh return true; case R.id.highPriority: // help action return true; case R.id.allPriority: // help action return true; default: return true; } } @SuppressWarnings({ "unchecked", "static-access" }) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); todoListView = (ListView) findViewById(R.id.listView); // Button addButton = (Button) findViewById(R.id.addButton); if (savedInstanceState != null) { todoItems = (ArrayList&lt;Entry&gt;) savedInstanceState .getSerializable("oldList"); } else { todoItems = new ArrayList&lt;Entry&gt;(); } todoArrayAdapter = new ToDoArrayAdapter(this, R.layout.item, todoItems); todoListView.setAdapter(todoArrayAdapter); getLoaderManager().initLoader(0, null, this); todoListView.setChoiceMode(todoListView.CHOICE_MODE_MULTIPLE_MODAL); todoListView.setMultiChoiceModeListener(new MultiChoiceModeListener() { @Override public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) { return false; } @Override public void onDestroyActionMode(ActionMode arg0) { todoArrayAdapter.removeSelection(); } @Override public boolean onCreateActionMode(ActionMode arg0, Menu arg1) { arg0.getMenuInflater().inflate(R.menu.context_menu, arg1); return false; } @Override public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) { switch (arg1.getItemId()) { case R.id.delete: SparseBooleanArray selected = todoArrayAdapter.getSelectedIds(); for (int i = (selected.size() - 1); i &gt;= 0; i--) { if (selected.valueAt(i)) { Entry selecteditem = todoArrayAdapter.getItem(selected .keyAt(i)); todoArrayAdapter.remove(selecteditem); } } // Close CAB arg0.finish(); return true; default: return false; } } @Override public void onItemCheckedStateChanged(ActionMode arg0, int arg1, long arg2, boolean arg3) { final int checkedCount = todoListView.getCheckedItemCount(); arg0.setTitle(checkedCount + " Selected"); todoArrayAdapter.toggleSelection(arg1); } }); todoListView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) { rowId = todoItems.get(position).getId(); itemPosition = position; Entry item_data = (Entry) todoListView .getItemAtPosition(position); DataWrapper itemData = new DataWrapper(item_data); Intent editIntent = new Intent(MainActivity.this, EditItem.class); editIntent.putExtra("itemData", itemData); startActivityForResult(editIntent, EDIT_NOTE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK) { switch (requestCode) { case ADD_NOTE: DataWrapper dw = (DataWrapper) data .getSerializableExtra("addItem"); entry = dw.getEntry(); todoItems.add(entry); NewItemAdded(entry.getName(), entry.getPriorityLevel(), entry.getStatus(), entry.getDay(), entry.getMonth(), entry.getYear()); todoArrayAdapter.sort(new Comparator&lt;Entry&gt;() { public int compare(Entry obj1, Entry obj2) { return obj1.priorityLevel.compareTo(obj2.priorityLevel); } }); todoArrayAdapter.notifyDataSetChanged(); break; case EDIT_NOTE: int defaultValue = 0; defaultValue = data.getIntExtra("removeItem", defaultValue); if (defaultValue == 10) { todoItems.remove(itemPosition); delete_byID(rowId); } else { DataWrapper dw2 = (DataWrapper) data .getSerializableExtra("editItem"); entry = dw2.getEntry(); update_byID(rowId, entry.getName(), entry.getPriorityLevel(), entry.getStatus(), entry.getDay(), entry.getMonth(), entry.getYear()); todoItems.set(itemPosition, entry); todoArrayAdapter.sort(new Comparator&lt;Entry&gt;() { public int compare(Entry arg0, Entry arg1) { return arg0.priorityLevel .compareTo(arg1.priorityLevel); } }); } todoArrayAdapter.notifyDataSetChanged(); break; default: break; } } super.onActivityResult(requestCode, resultCode, data); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable("oldList", todoItems); } public void NewItemAdded(String task, String priority, String status, int day, int month, int year) { final ContentValues value = new ContentValues(); value.put(ToDoContentProvider.TASK_COLUMN, task); String date = day + "/" + month + "/" + year; value.put(ToDoContentProvider.DATE_COLUMN, date); value.put(ToDoContentProvider.PRIORITY_COLUMN, priority); value.put(ToDoContentProvider.STATUS_COLUMN, status); final ContentResolver cr = getContentResolver(); cr.insert(ToDoContentProvider.CONTENT_URI, value); } public void delete_byID(long id) { final ContentResolver cr = getContentResolver(); cr.delete(ToDoContentProvider.CONTENT_URI, ToDoContentProvider.ID_COLUMN + "=" + id, null); } public void update_byID(long id, String task, String priority, String status, int day, int month, int year) { final ContentValues value = new ContentValues(); value.put(ToDoContentProvider.TASK_COLUMN, task); String date = day + "/" + month + "/" + year; value.put(ToDoContentProvider.DATE_COLUMN, date); value.put(ToDoContentProvider.PRIORITY_COLUMN, priority); value.put(ToDoContentProvider.STATUS_COLUMN, status); final ContentResolver cr = getContentResolver(); cr.update(ToDoContentProvider.CONTENT_URI, value, ToDoContentProvider.ID_COLUMN + "=" + id, null); } @Override public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) { return new CursorLoader(this, ToDoContentProvider.CONTENT_URI, null, null, null, null); } @Override public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) { todoItems.clear(); // Gets index of the column given a name. final int idColumnIndex = cursor .getColumnIndexOrThrow(ToDoContentProvider.ID_COLUMN); final int taskColumnIndex = cursor .getColumnIndexOrThrow(ToDoContentProvider.TASK_COLUMN); final int dateColumnIndex = cursor .getColumnIndexOrThrow(ToDoContentProvider.DATE_COLUMN); final int statusColumnIndex = cursor .getColumnIndexOrThrow(ToDoContentProvider.STATUS_COLUMN); final int priorityColumnIndex = cursor .getColumnIndexOrThrow(ToDoContentProvider.PRIORITY_COLUMN); // Database queries are returned as Cursor objects. // Cursors are pointers to the result set within the underlying data. // Here is how to iterate over the cursor rows. while (cursor.moveToNext()) { // Moves cursor to next row, cursor is // initialized at before first. final String task = cursor.getString(taskColumnIndex); final String date = cursor.getString(dateColumnIndex); String s[] = date.split("/"); int day = Integer.parseInt(s[0]); int month = Integer.parseInt(s[1]); int year = Integer.parseInt(s[2]); final String status = cursor.getString(statusColumnIndex); final String priority = cursor.getString(priorityColumnIndex); final int id = cursor.getInt(idColumnIndex); todoItems.add(new Entry(id, task, priority, status, day, month, year)); } // Notify adapter that backing data has changed. todoArrayAdapter.notifyDataSetChanged(); } @Override public void onLoaderReset(Loader&lt;Cursor&gt; arg0) { todoItems.clear(); todoArrayAdapter.notifyDataSetChanged(); } </code></pre> <p>}</p> <p>and</p> <p>ToDoArrayAdapter.java</p> <pre><code>public class ToDoArrayAdapter extends ArrayAdapter&lt;Entry&gt; { int resource; private SparseBooleanArray mSelectedItemsIds; Context context; List&lt;Entry&gt; itemEntries; public ToDoArrayAdapter(Context context, int resource, List&lt;Entry&gt; itemEntries) { super(context, resource, itemEntries); mSelectedItemsIds = new SparseBooleanArray(); this.resource = resource; this.context = context; this.itemEntries = itemEntries; } private class ViewHolder { TextView taskView; TextView priorityView; TextView statusView; TextView dateView; } @Override public View getView(int position, View convertView, ViewGroup parent) { Entry entry = getItem(position); String task = entry.getName(); String priority = entry.getPriorityLevel(); String status = entry.getStatus(); int day = entry.getDay(); int month = entry.getMonth(); int year = entry.getYear(); String date = day + "/" + month + "/" + year; View entryView = convertView; ViewHolder holder; if (entryView == null) { String inflaterService = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater inflater = (LayoutInflater) getContext() .getSystemService(inflaterService); entryView = inflater.inflate(resource, null); holder = new ViewHolder(); holder.taskView = (TextView) entryView.findViewById(R.id.taskView); holder.priorityView = (TextView) entryView .findViewById(R.id.priorityView); holder.statusView = (TextView) entryView .findViewById(R.id.statusView); holder.dateView = (TextView) entryView.findViewById(R.id.dateView); entryView.setTag(holder); } else { holder = (ViewHolder) entryView.getTag(); } holder.taskView.setText(task); holder.priorityView.setText(priority); holder.dateView.setText(date); holder.statusView.setText(status); entryView .setBackgroundColor(mSelectedItemsIds.get(position) ? 0x9934B5E4 : Color.TRANSPARENT); if (status.equalsIgnoreCase("DONE")) { holder.taskView.setTextColor(Color.parseColor("#145a03")); } else { if (calculateTheHourLeft(date) &lt;= 0) { holder.taskView.setTextColor(Color.parseColor("#ffa500")); } else { holder.taskView.setTextColor(Color.parseColor("#ea1616")); } } return entryView; } public void toggleSelection(int position) { selectView(position, !mSelectedItemsIds.get(position)); } public void removeSelection() { mSelectedItemsIds = new SparseBooleanArray(); notifyDataSetChanged(); } public void selectView(int position, boolean value) { if (value) mSelectedItemsIds.put(position, value); else mSelectedItemsIds.delete(position); notifyDataSetChanged(); } public SparseBooleanArray getSelectedIds() { return mSelectedItemsIds; } </code></pre> <p><strong>Error log:</strong></p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): FATAL EXCEPTION: main</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.hw2/com.example.hw2.MainActivity}: java.lang.InstantiationException: can't instantiate class com.example.hw2.MainActivity</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at android.app.ActivityThread.access$600(ActivityThread.java:141)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at android.os.Handler.dispatchMessage(Handler.java:99)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at android.os.Looper.loop(Looper.java:137)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at android.app.ActivityThread.main(ActivityThread.java:5103)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at java.lang.reflect.Method.invokeNative(Native Method)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at java.lang.reflect.Method.invoke(Method.java:525)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): at dalvik.system.NativeStart.main(Native Method)</p> <p>12-08 17:46:14.571: E/AndroidRuntime(1955): Caused by: java.lang.InstantiationException: can't instantiate class com.example.hw2.MainActivity</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload