public class TasksCursorAdapter_CA extends android.widget.CursorAdapter {
SQLiteDatabase dh = DatabaseHelper_CA.getInstance().getDb();
private LayoutInflater mInflater;
private Context mContext;
Cursor cursor;
public TasksCursorAdapter_CA(Context context, Cursor c) {
super(context, c);
mInflater = LayoutInflater.from(context);
mContext = context;
cursor = c;
}
@Override
public void bindView(View view, Context context, final Cursor cursor) {
ViewHolder_CA holder = (ViewHolder_CA) view.getTag();
holder.setTextView((TextView) view.findViewById(R.id.textviewx));
holder.setCheckBox((CheckBox) view.findViewById(R.id.checkbox));
CheckBox cb = holder.getCheckBox();
holder.getTextView().setText(cursor.getString(cursor.getColumnIndex("name")));
cb.setTag(new Integer(cursor.getPosition()));
CompoundButton.OnCheckedChangeListener checkedChange = new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ContentValues contentValues = new ContentValues();
Integer currentPosition = (Integer) buttonView.getTag();
String currentPositionString = Double.toString(currentPosition);
if (cursor.moveToPosition(currentPosition)) {
String rowID = cursor.getString(cursor.getColumnIndex("_id"));
if (isChecked) {
contentValues.put("selected", "1");
dh.update(DatabaseHelper_CA.TABLE_NAME, contentValues, "_id = ?",
new String[]{rowID});
} else if (!isChecked) {
contentValues.put("selected", "0");
dh.update(DatabaseHelper_CA.TABLE_NAME, contentValues, "_id = ?",
new String[]{rowID});
}
}
}
};
cb.setOnCheckedChangeListener(checkedChange);
if (cursor.getString(cursor.getColumnIndex("selected")).compareTo("1") == 0) {
cb.setChecked(true);
} else {
cb.setChecked(false);
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
ViewHolder_CA holder;
View convertView = mInflater.inflate(R.layout.custom_ca, parent, false);
holder = new ViewHolder_CA(convertView);
convertView.setTag(holder);
return convertView;
}
}
Sunday, October 25, 2015
Tuesday, October 13, 2015
How to set a notification using a broadcast reciever
Receiver class
public class NotificationPublisher extends BroadcastReceiver {public static String NOTIFICATION_ID = "notification-id";
public static String NOTIFICATION = "notification";
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = intent.getParcelableExtra(NOTIFICATION);
int id = intent.getIntExtra(NOTIFICATION_ID, 0);
notificationManager.notify(id, notification);
}
}
Main Class
private void scheduleNotification(Notification notification, Calendar cal) { int newid = NotificationID.getID(); Intent notificationIntent = new Intent(this, NotificationPublisher.class); //making the intent unique notificationIntent.setAction("actionstring" + System.currentTimeMillis()); //Sending variables to the Broadcast Reciever notificationIntent.putExtra(NotificationPublisher.NOTIFICATION_ID, newid); notificationIntent.putExtra(NotificationPublisher.NOTIFICATION, notification); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC, cal.getTimeInMillis(), pendingIntent); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) //Create and returns a notification object private Notification getNotification(String content) { Notification.Builder builder = new Notification.Builder(this); builder.setContentTitle("Wedding App Reminder"); builder.setContentText(content); builder.setSmallIcon(R.drawable.alarm); return builder.build(); } private void setReminder(){ setReminder.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String reminderDate = editTextDate.getText().toString(); String reminderTime = editTextTime.getText().toString(); String notes = editTextNotes.getText().toString(); String[] daySplits = reminderDate.split(" "); String[] timeSplits = reminderTime.split(":"); day = Integer.parseInt(daySplits[0]); for (int i = 0; i < 12; i++) { if (daySplits[1].equals(MONTHS[i])) { month = i + 1; } } year = Integer.parseInt(daySplits[2]); hour = Integer.parseInt(timeSplits[0]); String[] splits = timeSplits[1].split(" "); minute = Integer.parseInt(splits[0]); ampm = splits[1]; second = 00; Calendar c = Calendar.getInstance(); c.set(year, (month - 1), day); c.set(Calendar.HOUR_OF_DAY, hour); c.set(Calendar.MINUTE, minute); c.set(Calendar.SECOND, second); if (ampm.equals("AM")) c.set(Calendar.AM_PM, Calendar.AM); else if (ampm.equals("PM")) c.set(Calendar.AM_PM, Calendar.PM); // Ask our service to set an alarm for that date, this activity talks to the client that talks to the service scheduleNotification(getNotification(name + " task was scheduled to " + date + " " + mny), c); // Notify the user what they just did showToast("Notification set for: " + day + "/" + month + "/" + year); } }); } }NotificatioID class
public class NotificationID { private final static AtomicInteger c = new AtomicInteger(0); public static int getID() { return c.incrementAndGet(); } }AndroidManifest.XML
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <receiver android:name=".NotificationPublisher_CA" android:enabled="true" android:label="NotificationPublisher"> android:exported="true" <!--<intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter>--> </receiver>
Subscribe to:
Posts (Atom)