Я хочу установить отдельные сигналы тревоги, используя карты в cardView с адаптером и TimePickerFragment, он работает с одной картой, но перезаписывает сигнал тревоги на первую карту независимо от того, какую другую карту я выберу, нужно ли добавить метод в мой адаптер класс для карты с использованием позиции с карты ArrayList? Я просто пытаюсь показать, сколько времени я выбрал из TimePickerFragment на каждой отдельной карте
`открытый класс myAdapter расширяет RecyclerView.Adapter {
private ArrayList<CardDataHolder> dataList;
private OnItemClickListener listener;
//put interface methods here for items on the card actions
public interface OnItemClickListener
{
void onItemClicked(int pos);
void Delete(int pos);
void alarmSet(int pos);
}
public void setOnItemClickListener(OnItemClickListener listener)
{
this.listener = listener;
}
//this class set values and defines the OnclickListener method for item click
public static class myViewHolder extends RecyclerView.ViewHolder
{
public ImageView image;
public TextView text;
public ImageView imgAlarm;
public myViewHolder(@NonNull View itemView, OnItemClickListener listener) {
super(itemView);
//put the findById method here to set inputs
image = itemView.findViewById(R.id.cardDelete);
text = itemView.findViewById(R.id.txtCard);
imgAlarm = itemView.findViewById(R.id.imgAlarm);
//when the who card is clicked
itemView.setOnClickListener((v) -> {
if(listener != null)
{
int pos = getAdapterPosition();
if(pos != RecyclerView.NO_POSITION)
{
listener.onItemClicked(pos);
}
}
});
//when the image X is clicked
image.setOnClickListener((v)-> {
if(listener != null)
{
int pos = getAdapterPosition();
if(pos != RecyclerView.NO_POSITION) {
listener.Delete(pos);
}
}
});
imgAlarm.setOnClickListener((V)->{
if(listener != null)
{
int pos = getAdapterPosition();
if(pos != RecyclerView.NO_POSITION) {
listener.alarmSet(pos);
}
}
});
}
}
public myAdapter(ArrayList<CardDataHolder> data)
{
dataList = data;
}
@NonNull
@Override
public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cards,
родитель, ложь);
myViewHolder holder = new myViewHolder (view, listener);
возврат владельца;
}
@Override
public void onBindViewHolder(@NonNull myViewHolder ViewHolder, int pos) {
//current item of the card
CardDataHolder currentItem = dataList.get(pos);
//sets the text view with the data on card so each card is matched with the correct
//data
ViewHolder.text.setText(currentItem.getText());
}
//returns he size of array of cards
@Override
public int getItemCount() {
if(dataList == null) {
return 0;
}
else
{
return dataList.size();
}
}
//remove cards when the X is clicked on the card
public void removeAt(int position) {
dataList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, dataList.size());
}
} `
'открытый класс TimePickerFragment extends DialogFragment {
@NonNull
@Override
общедоступный диалог onCreateDialog (@Nullable Bundle saveInstanceState) {
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int min = calendar.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
TextView viewAlarmTime = getActivity().findViewById(R.id.viewAlarmTime);
//TODO only sets one entry need to make it set for all cards
viewAlarmTime.setText(String.format("%02d:%02d", hourOfDay, minute));
}
}, hour, min, android.text.format.DateFormat.is24HourFormat(getActivity()));
}'
в основном
'adapter.setOnItemClickListener (новый myAdapter.OnItemClickListener () {
@Override
public void onItemClicked (int pos) {
Toast.makeText (getApplicationContext (), String.valueOf (pos), Toast.LENGTH_LONG) .show ();
dialogAlert(pos);
}
@Override
public void Delete(int pos) {
adapter.removeAt(pos);
write(getApplicationContext(), cardData);
}
@Override
public void alarmSet(int pos) {
//TODO make this pop up a clock fragment setter and display it
Toast.makeText(getApplication(), "Set Alarm" + pos, Toast.LENGTH_LONG).show();
DialogFragment timePicker = new TimePickerFragment();
timePicker.showNow(getSupportFragmentManager(), "time picker");
}
}); '