Ich habe Listenansicht der Ereignisse mit ihren Daten angepasst. Wenn die Verwendung ein bestimmtes Element in der Liste auswählt, fragt mein Programm, ob der Benutzer an dieses Ereignis erinnert werden soll. Ich habe Probleme, die Ereignisse zu wiederholen. Wenn ich zum Beispiel für die Position 1 die Erinnerung auf 14:15 Uhr und für die Position 2 festlege, setze ich die Erinnerung auf 2:30. Die Benachrichtigung der zweiten Liste wird angezeigt, wobei die erste ignoriert wird. Ich möchte, dass beide Benachrichtigungen zu ihrer jeweiligen Zeit angezeigt werden.Android Listenansicht Looping
Kann jemand herausfinden und mir helfen, wie die Liste zu loopen, so dass ich Erinnerungen für jedes Element auf der Liste festlegen kann.
Bitte überprüfen Sie die OnClickResponse() Methode, wo ich einen Alarm erstelle.
'public class Product extends AppCompatActivity implements View.OnClickListener {
private List<list> myList = new ArrayList<list>();
private PendingIntent pendingIntent;
private void fill_ListView() {
Code eingeben hier‘
ArrayAdapter<list> listArrayAdapter = new myListAdapter();
ListView list = (ListView) findViewById(R.id.product_View);
list.setAdapter(listArrayAdapter);
} private void clickResponse() {
ListView l = (ListView) findViewById(R.id.product_View);
if(l!=null){
l.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View viewClicked,
final int position, long id) {
AlertDialog.Builder alert = new AlertDialog.Builder(
Product.this);
alert.setTitle("Reminder!!");
alert.setMessage("Do you want to be reminded of the expiry date of this product?”);
alert.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Calendar calendar = Calendar.getInstance(); // checking if first item is clicked then a reminder will be set for some date
if(position==0){
calendar.set(Calendar.MONTH, 6);
calendar.set(Calendar.YEAR, 2016);
calendar.set(Calendar.DAY_OF_MONTH, 16);
calendar.set(Calendar.HOUR_OF_DAY, 04);
calendar.set(Calendar.MINUTE, 38);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.AM_PM,Calendar.AM);
Intent myIntent = new Intent(Product.this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(Product.this, 0,myIntent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
} if(position==1){
calendar.set(Calendar.MONTH, 6);
calendar.set(Calendar.YEAR, 2016);
calendar.set(Calendar.DAY_OF_MONTH, 16);
calendar.set(Calendar.HOUR_OF_DAY, 04);
calendar.set(Calendar.MINUTE, 39);
calendar.set(Calendar.SECOND, 40);
calendar.set(Calendar.AM_PM,Calendar.AM);
Intent myIntent = new Intent(Product.this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(Product.this, 0,myIntent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
}
dialog.dismiss();
}
});
alert.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alert.show();
}
});
}
}
private class myListAdapter extends ArrayAdapter<list> {
public myListAdapter() {
// what objects are going in there and how are they going to look
super(Product.this, R.layout.custom_layout, myList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.custom_layout, parent, false);
}
list current_list = myList.get(position);
ImageView imageView = (ImageView) itemView.findViewById(R.id.id_image);
imageView.setImageResource(current_list.getIconId());
// getting the title of the event
TextView titleTxt = (TextView) itemView.findViewById(R.id.id_event);
titleTxt.setText(current_list.getName());
// getting the description
//
TextView desp = (TextView) itemView.findViewById(R.id.id_desp);
// desp.setText(current_list.getDetails());
EditText text = (EditText)itemView.findViewById(R.id.id_desp);
text.setText(current_list.getDetails());
TextView date = (TextView) itemView.findViewById(R.id.id_date);
date.setText(current_list.getDate());
return itemView;
}
}
Ich habe den zweiten Parameter der zweiten if-Anweisung auf 1 geändert, aber jetzt funktioniert der erste einwandfrei, aber der zweite Alarm zeigt nicht einmal – timmy24565
Sie müssen ihn für jeden Alarm eindeutig halten. –
können Sie bitte mehr dazu erklären. Vielen Dank. Der erste erscheint und der zweite erscheint, aber nicht getrennt. Wenn der zweite Alarm ausgelöst wird, wird der erste noch überschrieben – timmy24565