在cardView中的不同卡上设置警报,保持超车时间

时间:2019-06-16 05:56:04

标签: java android android-fragments android-cardview android-alarms

我想在具有适配器和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()));

}'

0 个答案:

没有答案