use of com.thevarunshah.classes.Item in project SimpleBucketList-material by thevarunshah.
the class BucketItemListView method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bucket_item_listview);
// fetch toolbar and set it as the action bar
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setContentInsetsRelative(72, 72);
setSupportActionBar(toolbar);
// check if tablet view is being used
boolean tablet = (findViewById(R.id.coordLayout_tablet) != null);
// obtain list view and create new bucket list custom adapter
recyclerView = findViewById(R.id.recycler_view);
recyclerAdapter = new BucketItemListAdapter(this, Utility.getBucketList(), tablet, this);
// attach adapter to list view
recyclerView.setAdapter(recyclerAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(recyclerAdapter);
itemTouchHelper = new ItemTouchHelper(callback);
itemTouchHelper.attachToRecyclerView(recyclerView);
// obtain add button and attach a on-tap listener to it
final FloatingActionButton addButton = findViewById(R.id.add_item);
addButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// inflate layout with customized alert dialog view
LayoutInflater layoutInflater = LayoutInflater.from(BucketItemListView.this);
final View dialog = layoutInflater.inflate(R.layout.input_dialog, null);
final AlertDialog.Builder newItemDialogBuilder = new AlertDialog.Builder(BucketItemListView.this, R.style.AppCompatAlertDialogStyle);
// customize alert dialog and set its view
newItemDialogBuilder.setTitle("New Item");
newItemDialogBuilder.setIcon(R.drawable.ic_launcher);
newItemDialogBuilder.setView(dialog);
// fetch and set up edittext
final EditText input = dialog.findViewById(R.id.input_dialog_text);
input.setHint("Enter Details");
input.setFocusableInTouchMode(true);
input.requestFocus();
// set up actions for dialog buttons
newItemDialogBuilder.setPositiveButton("ADD", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int whichButton) {
// create new item
String itemText = input.getText().toString();
Item item = new Item(itemText);
// add item to main list and update view
Utility.getBucketList().add(item);
recyclerAdapter.notifyDataSetChanged();
// backup data
Utility.writeData(getApplicationContext());
}
});
newItemDialogBuilder.setNegativeButton("CANCEL", null);
// create and show the dialog
AlertDialog newItemDialog = newItemDialogBuilder.create();
newItemDialog.show();
// show keyboard
newItemDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
});
// add specific listeners only if tablet is not being used
if (!tablet) {
// moving fab out of the way when scrolling listview
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dy > 0) {
// scrolling down
addButton.animate().translationY(addButton.getHeight() * 2);
} else {
// scrolling up
addButton.animate().translationY(0);
}
}
});
}
}
use of com.thevarunshah.classes.Item in project SimpleBucketList-material by thevarunshah.
the class ListViewRemoteViewsFactory method getViewAt.
public RemoteViews getViewAt(int position) {
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget_row);
// get item and set the appropriate checkbox
Item item = records.get(position);
String data = item.getItemText();
rv.setTextViewText(R.id.widgetrow_text, data);
if (item.isDone()) {
rv.setInt(R.id.widgetrow_text, "setPaintFlags", Paint.ANTI_ALIAS_FLAG | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
rv.setInt(R.id.widgetrow_text, "setPaintFlags", Paint.ANTI_ALIAS_FLAG & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
// setup onclick action for individual items
final Intent onClickIntent = new Intent(mContext, BucketListWidgetProvider.class);
onClickIntent.setAction(BucketListWidgetProvider.CLICK_ACTION);
onClickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
onClickIntent.setData(Uri.parse(onClickIntent.toUri(Intent.URI_INTENT_SCHEME)));
rv.setOnClickFillInIntent(R.id.widgetrow_text, onClickIntent);
return rv;
}
use of com.thevarunshah.classes.Item in project SimpleBucketList-material by thevarunshah.
the class ArchivedItemAdapter method getView.
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
if (convertView == null) {
// inflate view and link each component to the holder
LayoutInflater vi = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.archived_row, null);
holder.item = convertView.findViewById(R.id.row_text);
holder.unarchive = convertView.findViewById(R.id.unarchive_button);
holder.delete = convertView.findViewById(R.id.delete_button);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// attach a on-tap listener to the item for unarchiving
holder.unarchive.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// get clicked item
final Item item = getItem(position);
// remove item from adapter, add to bucket list and update view
Utility.getBucketList().add(item);
archiveList.remove(item);
notifyDataSetChanged();
// backup data
Utility.writeData(getContext());
// display success message and give option to undo
Snackbar infoBar = Snackbar.make(v, "Item unarchived.", Snackbar.LENGTH_LONG);
infoBar.setAction("UNDO", new OnClickListener() {
@Override
public void onClick(View v) {
// undo unarchiving
Utility.getBucketList().remove(item);
archiveList.add(position, item);
notifyDataSetChanged();
// backup data
Utility.writeData(getContext());
}
});
infoBar.setActionTextColor(Color.WHITE);
infoBar.show();
}
});
// attach a on-tap listener to the item for deleting
holder.delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// get clicked item
final Item item = getItem(position);
// remove item from adapter and update view
archiveList.remove(item);
notifyDataSetChanged();
// backup data
Utility.writeData(getContext());
// display success message and give option to undo
Snackbar infoBar = Snackbar.make(v, "Item deleted.", Snackbar.LENGTH_LONG);
infoBar.setAction("UNDO", new OnClickListener() {
@Override
public void onClick(View v) {
// undo deleting
archiveList.add(position, item);
notifyDataSetChanged();
// backup data
Utility.writeData(getContext());
}
});
infoBar.setActionTextColor(Color.WHITE);
infoBar.show();
}
});
// get item and link references to holder
Item item = archiveList.get(position);
holder.item.setText(item.getItemText());
holder.delete.setTag(item);
return convertView;
}
use of com.thevarunshah.classes.Item in project SimpleBucketList-material by thevarunshah.
the class BucketItemListAdapter method onItemMove.
@Override
public void onItemMove(int fromPosition, int toPosition) {
Item prev = bucketList.remove(fromPosition);
bucketList.add(toPosition, prev);
notifyItemMoved(fromPosition, toPosition);
}
use of com.thevarunshah.classes.Item in project SimpleBucketList-material by thevarunshah.
the class BucketItemListAdapter method onBindViewHolder.
@Override
public void onBindViewHolder(final ItemViewHolder holder, final int position) {
if (!tablet) {
// attach an on-tap listener to the item for checking/unchecking
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Item item = getItem(position);
CheckBox cb = view.findViewById(R.id.row_check);
cb.setChecked(!item.isDone());
}
});
// attach a long-tap listener to the item
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(final View view) {
// get clicked item
final Item item = getItem(position);
// inflate layout with customized alert dialog view
LayoutInflater layoutInflater = LayoutInflater.from(context);
final View dialog = layoutInflater.inflate(R.layout.context_menu_dialog, null);
final AlertDialog.Builder itemOptionsDialogBuilder = new AlertDialog.Builder(context, R.style.AppCompatAlertDialogStyle);
// customize alert dialog and set its view
itemOptionsDialogBuilder.setTitle("Item Options");
itemOptionsDialogBuilder.setView(dialog);
// set up actions for dialog buttons
itemOptionsDialogBuilder.setNegativeButton("CANCEL", null);
// create the dialog
final AlertDialog itemOptionsDialog = itemOptionsDialogBuilder.create();
/*
*fetch buttons and attach the appropriate on-tap listeners
*/
// edit button on-tap listener
Button editButton = dialog.findViewById(R.id.context_edit);
editButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// inflate layout with customized alert dialog view
LayoutInflater layoutInflater = LayoutInflater.from(context);
final View dialog = layoutInflater.inflate(R.layout.input_dialog, null);
final AlertDialog.Builder editItemDialogBuilder = new AlertDialog.Builder(context, R.style.AppCompatAlertDialogStyle);
// customize alert dialog and set its view
editItemDialogBuilder.setTitle("Edit Item");
editItemDialogBuilder.setIcon(R.drawable.ic_edit_black_24dp);
editItemDialogBuilder.setView(dialog);
// fetch and set up edittext
final EditText input = dialog.findViewById(R.id.input_dialog_text);
input.setText(item.getItemText());
input.setFocusableInTouchMode(true);
input.requestFocus();
// set up actions for dialog buttons
editItemDialogBuilder.setPositiveButton("SAVE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int whichButton) {
// update text of item and the view
item.setItemText(input.getText().toString());
notifyDataSetChanged();
// backup data
Utility.writeData(context);
itemOptionsDialog.dismiss();
}
});
editItemDialogBuilder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
itemOptionsDialog.dismiss();
}
});
// create and show the dialog
AlertDialog editItemDialog = editItemDialogBuilder.create();
editItemDialog.show();
// show keyboard
editItemDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
});
// archive button on-tap listener
Button archiveButton = dialog.findViewById(R.id.context_archive);
archiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// move item to the archive list and update the view
Utility.moveToArchive(position);
notifyDataSetChanged();
// backup data
Utility.writeData(context);
itemOptionsDialog.dismiss();
// display success message
Snackbar infoBar = Snackbar.make(view, "Item archived.", Snackbar.LENGTH_SHORT);
infoBar.show();
}
});
// delete button on-tap listener
Button deleteButton = dialog.findViewById(R.id.context_delete);
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// remove item from adapter and update view
getBucketList().remove(position);
notifyDataSetChanged();
// backup data
Utility.writeData(context);
itemOptionsDialog.dismiss();
// display success message and give option to undo
Snackbar infoBar = Snackbar.make(view, "Item deleted.", Snackbar.LENGTH_LONG);
infoBar.setAction("UNDO", new View.OnClickListener() {
@Override
public void onClick(View v) {
// undo deleting
getBucketList().add(position, item);
notifyDataSetChanged();
// backup data
Utility.writeData(context);
}
});
infoBar.setActionTextColor(Color.WHITE);
infoBar.show();
}
});
// show the dialog
itemOptionsDialog.show();
return true;
}
});
}
final Item item = bucketList.get(position);
// attach a check listener to the checkbox
holder.done.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// get item and set as done/undone
item.setDone(isChecked);
// apply or get rid of strikethrough effect
if (isChecked) {
holder.item.setPaintFlags(holder.item.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
holder.item.setPaintFlags(holder.item.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
// backup data
Utility.writeData(context);
}
});
// tablet view listeners
if (tablet) {
// on click for the item text
holder.item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
holder.done.setChecked(!item.isDone());
}
});
// on click for edit
holder.edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// inflate layout with customized alert dialog view
LayoutInflater layoutInflater = LayoutInflater.from(context);
final View dialog = layoutInflater.inflate(R.layout.input_dialog, null);
final AlertDialog.Builder editItemDialogBuilder = new AlertDialog.Builder(context, R.style.AppCompatAlertDialogStyle);
// customize alert dialog and set its view
editItemDialogBuilder.setTitle("Edit Item");
editItemDialogBuilder.setIcon(R.drawable.ic_edit_black_24dp);
editItemDialogBuilder.setView(dialog);
// fetch and set up edittext
final EditText input = dialog.findViewById(R.id.input_dialog_text);
input.setText(item.getItemText());
input.setFocusableInTouchMode(true);
input.requestFocus();
// set up actions for dialog buttons
editItemDialogBuilder.setPositiveButton("SAVE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int whichButton) {
// update text of item and the view
item.setItemText(input.getText().toString());
// backup data
Utility.writeData(context);
}
});
editItemDialogBuilder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
// create and show the dialog
AlertDialog editItemDialog = editItemDialogBuilder.create();
editItemDialog.show();
// show keyboard
editItemDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
});
// on click for item archive
holder.archive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// move item to the archive list and update the view
Utility.moveToArchive(position);
notifyDataSetChanged();
// backup data
Utility.writeData(context);
// display success message
Snackbar infoBar = Snackbar.make(view, "Item archived.", Snackbar.LENGTH_SHORT);
infoBar.show();
}
});
// on click for item delete
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// remove item from adapter and update view
bucketList.remove(position);
notifyDataSetChanged();
// backup data
Utility.writeData(context);
// display success message and give option to undo
Snackbar infoBar = Snackbar.make(view, "Item deleted.", Snackbar.LENGTH_LONG);
infoBar.setAction("UNDO", new View.OnClickListener() {
@Override
public void onClick(View v) {
// undo deleting
bucketList.add(position, item);
notifyDataSetChanged();
// backup data
Utility.writeData(context);
}
});
infoBar.setActionTextColor(Color.WHITE);
infoBar.show();
}
});
}
holder.handle.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = MotionEventCompat.getActionMasked(event);
if (action == MotionEvent.ACTION_DOWN) {
dragStartListener.onStartDrag(holder);
BucketItemListView.itemsMoved = true;
}
return false;
}
});
// get item and link references to holder
holder.item.setText(item.getItemText());
holder.done.setChecked(item.isDone());
holder.done.setTag(item);
}
Aggregations