我想在具有适配器和TimePickerFragment的cardView中使用卡来设置单独的警报,它可以与一个卡一起使用,但是无论我选择了哪个其他卡,都会在第一张卡上覆盖警报,我是否需要在适配器中添加一个方法使用卡ArrayList中的位置获取卡的类?我只是想显示我在每个单独的卡上从TimePickerFragment中选择的时间
java
`公共类myAdapter扩展了RecyclerView.Adapter {
state.nav
parent,false); myViewHolder持有者=新的myViewHolder(视图,侦听器); 归还持有人; }
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,
}`
'公共类TimePickerFragment扩展DialogFragment { @NonNull @Override 公共对话框onCreateDialog(@Nullable Bundle savedInstanceState){
@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()); }
主要
'adapter.setOnItemClickListener(new myAdapter.OnItemClickListener(){ @Override 公共无效onItemClicked(int pos){ Toast.makeText(getApplicationContext(),String.valueOf(pos),Toast.LENGTH_LONG).show();
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())); }'