Android 集成两个类似于viewpager和TableLayout(动画)的recyclerview

Android 集成两个类似于viewpager和TableLayout(动画)的recyclerview,android,android-layout,android-recyclerview,android-viewpager,android-tablayout,Android,Android Layout,Android Recyclerview,Android Viewpager,Android Tablayout,嗯,这是我问的一个后续问题 现在我有两个RecyclerViews一个是日期,另一个是时间。我需要用某种方法将它们连接起来,这样它们就可以有一个ViewPager和TableLayout集成动画。刷卡只会让我选择下一个日期和时间。因此,我的布局文件如下。ViewPager的任何替代品都可以。当日期改变时,我需要一些动画。所以UX并没有变得疯狂 MainActivity.java public class MainActivity extends AppCompatActivity {

嗯,这是我问的一个后续问题

现在我有两个<代码>RecyclerViews一个是日期,另一个是时间。我需要用某种方法将它们连接起来,这样它们就可以有一个
ViewPager
TableLayout
集成动画。刷卡只会让我选择下一个日期和时间。因此,我的布局文件如下。
ViewPager
的任何替代品都可以。当日期改变时,我需要一些动画。所以UX并没有变得疯狂

MainActivity.java

public class MainActivity extends AppCompatActivity {

    public static final String TAG = MainActivity.class.getSimpleName();
    ArrayList<String> setUpDatesList;

    RecyclerView dateRV;
    ChipDatesAdapter chipAdapter;

    RecyclerView timeRV;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setUpDatesList = new ArrayList<>();
        dateRV = findViewById(R.id.chip_group_rv);
        timeRV = findViewById(R.id.time_rv);


        setUpDates();
        setUpTimes();
    }

    ChipTimeAdapter chipTimeAdapter;
    ArrayList<String> timeArrayList = new ArrayList<>();

    void setUpTimes() {



        DateFormat df = new SimpleDateFormat("HH:mm");
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 10);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        int startDate = cal.get(Calendar.DATE);
        while (cal.get(Calendar.DATE) == startDate) {

            String timeIs = df.format(cal.getTime());
            System.out.println(timeIs);
            cal.add(Calendar.MINUTE, 30);
            timeArrayList.add(timeIs);
        }
        chipTimeAdapter = new ChipTimeAdapter(timeArrayList);


        timeRV.setAdapter(chipTimeAdapter);
        timeRV.setLayoutManager(new GridLayoutManager(this,4));

    }

    void setUpDates() {
        chipAdapter = new ChipDatesAdapter();
        Calendar getAll30DaysCalendar = Calendar.getInstance();
        for (int i = 0; i < 31; i++) {
            SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault());
            String formattedDate = df.format(getAll30DaysCalendar.getTime());
            setUpDatesList.add(formattedDate);
            System.out.println(formattedDate.substring(0, 6));
            getAll30DaysCalendar.add(Calendar.DATE, 1);
        }
        chipAdapter.setUpDates(setUpDatesList);
        dateRV.setAdapter(chipAdapter);
        dateRV.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
    }
}
public class ChipDatesAdapter extends RecyclerView.Adapter<ChipDatesAdapter.chipViewHolder> {

    ArrayList<String> datesString;
    int lastSelectedPosition = 0;

    void setUpDates(ArrayList<String> chipArrayList) {
        datesString = new ArrayList<>();
        datesString = chipArrayList;
    }


    @NonNull
    @Override
    public chipViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.item_chip_dates, parent, false);

        return new chipViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final chipViewHolder holder, final int position) {

        holder.chip.setText(datesString.get(position));

        holder.chip.setChecked(lastSelectedPosition == position);

    }

    public static final String TAG = ChipDatesAdapter.class.getSimpleName();

    @Override
    public int getItemCount() {
        return datesString.size();
    }

    class chipViewHolder extends RecyclerView.ViewHolder {

        Chip chip;


        public chipViewHolder(@NonNull View itemView) {
            super(itemView);
            chip = itemView.findViewById(R.id.chip_item);

            chip.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    lastSelectedPosition = getAdapterPosition();
                    notifyDataSetChanged();
                }
            });

        }
    }

}
public class ChipTimeAdapter extends RecyclerView.Adapter<ChipTimeAdapter.ChipTimeViewHolder> {

    int lastPosition = -1;

    @NonNull
    @Override
    public ChipTimeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View view = layoutInflater.inflate(R.layout.item_chip_time, parent, false);


        return new ChipTimeViewHolder(view);
    }

    ChipTimeAdapter(ArrayList<String> correctTime) {
        this.correctTimeList = correctTime;
    }

    @Override
    public void onBindViewHolder(@NonNull final ChipTimeViewHolder holder, final int position) {

        holder.time.setText(correctTimeList.get(position));

        holder.time.setChecked(lastPosition == position);



    }

    ArrayList<String> correctTimeList = new ArrayList<>();

    @Override
    public int getItemCount() {
        return correctTimeList.size();
    }

    class ChipTimeViewHolder extends RecyclerView.ViewHolder {

        RadioButton time;

        public ChipTimeViewHolder(@NonNull View itemView) {
            super(itemView);
            time = itemView.findViewById(R.id.item_time);

            time.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    lastPosition = getAdapterPosition();
                    notifyDataSetChanged();
                }
            });

        }

    }
}
public类MainActivity扩展了AppCompatActivity{
公共静态最终字符串标记=MainActivity.class.getSimpleName();
ArrayList设置日期列表;
回收视图数据;
芯片适配器;
回收视图时间;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpDatesList=newarraylist();
dateRV=findViewById(R.id.chip\u group\u rv);
timeRV=findViewById(R.id.time_rv);
设置日期();
设置时间();
}
芯片时间适配器芯片时间适配器;
ArrayList timeArrayList=新建ArrayList();
无效设置时间(){
DateFormat df=新的SimpleDataFormat(“HH:mm”);
Calendar cal=Calendar.getInstance();
校准设置(日历小时/天,10);
校准设置(日历分钟,0);
校准设置(日历秒,0);
int startDate=cal.get(Calendar.DATE);
while(cal.get(Calendar.DATE)=startDate){
字符串timeIs=df.format(cal.getTime());
系统输出打印项次(timeIs);
计算添加(日历分钟,30);
timeArrayList.add(timeIs);
}
chipTimeAdapter=新的chipTimeAdapter(timeArrayList);
timeRV.setAdapter(芯片时间适配器);
timeRV.setLayoutManager(新的GridLayoutManager(this,4));
}
作废日期(){
chipAdapter=新的ChipDatesAdapter();
Calendar getAll30DaysCalendar=Calendar.getInstance();
对于(int i=0;i<31;i++){
SimpleDataFormat df=新的SimpleDataFormat(“dd-MMM-yyyy”,Locale.getDefault());
字符串formattedDate=df.format(getAll30DaysCalendar.getTime());
setUpDatesList.add(格式化日期);
System.out.println(formattedDate.substring(0,6));
getAll30DaysCalendar.add(Calendar.DATE,1);
}
chipAdapter.setUpDates(setUpDatesList);
日期设置适配器(芯片适配器);
dateRV.setLayoutManager(新的LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));
}
}
DatesAdapter.java

public class MainActivity extends AppCompatActivity {

    public static final String TAG = MainActivity.class.getSimpleName();
    ArrayList<String> setUpDatesList;

    RecyclerView dateRV;
    ChipDatesAdapter chipAdapter;

    RecyclerView timeRV;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setUpDatesList = new ArrayList<>();
        dateRV = findViewById(R.id.chip_group_rv);
        timeRV = findViewById(R.id.time_rv);


        setUpDates();
        setUpTimes();
    }

    ChipTimeAdapter chipTimeAdapter;
    ArrayList<String> timeArrayList = new ArrayList<>();

    void setUpTimes() {



        DateFormat df = new SimpleDateFormat("HH:mm");
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 10);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        int startDate = cal.get(Calendar.DATE);
        while (cal.get(Calendar.DATE) == startDate) {

            String timeIs = df.format(cal.getTime());
            System.out.println(timeIs);
            cal.add(Calendar.MINUTE, 30);
            timeArrayList.add(timeIs);
        }
        chipTimeAdapter = new ChipTimeAdapter(timeArrayList);


        timeRV.setAdapter(chipTimeAdapter);
        timeRV.setLayoutManager(new GridLayoutManager(this,4));

    }

    void setUpDates() {
        chipAdapter = new ChipDatesAdapter();
        Calendar getAll30DaysCalendar = Calendar.getInstance();
        for (int i = 0; i < 31; i++) {
            SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault());
            String formattedDate = df.format(getAll30DaysCalendar.getTime());
            setUpDatesList.add(formattedDate);
            System.out.println(formattedDate.substring(0, 6));
            getAll30DaysCalendar.add(Calendar.DATE, 1);
        }
        chipAdapter.setUpDates(setUpDatesList);
        dateRV.setAdapter(chipAdapter);
        dateRV.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
    }
}
public class ChipDatesAdapter extends RecyclerView.Adapter<ChipDatesAdapter.chipViewHolder> {

    ArrayList<String> datesString;
    int lastSelectedPosition = 0;

    void setUpDates(ArrayList<String> chipArrayList) {
        datesString = new ArrayList<>();
        datesString = chipArrayList;
    }


    @NonNull
    @Override
    public chipViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.item_chip_dates, parent, false);

        return new chipViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final chipViewHolder holder, final int position) {

        holder.chip.setText(datesString.get(position));

        holder.chip.setChecked(lastSelectedPosition == position);

    }

    public static final String TAG = ChipDatesAdapter.class.getSimpleName();

    @Override
    public int getItemCount() {
        return datesString.size();
    }

    class chipViewHolder extends RecyclerView.ViewHolder {

        Chip chip;


        public chipViewHolder(@NonNull View itemView) {
            super(itemView);
            chip = itemView.findViewById(R.id.chip_item);

            chip.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    lastSelectedPosition = getAdapterPosition();
                    notifyDataSetChanged();
                }
            });

        }
    }

}
public class ChipTimeAdapter extends RecyclerView.Adapter<ChipTimeAdapter.ChipTimeViewHolder> {

    int lastPosition = -1;

    @NonNull
    @Override
    public ChipTimeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View view = layoutInflater.inflate(R.layout.item_chip_time, parent, false);


        return new ChipTimeViewHolder(view);
    }

    ChipTimeAdapter(ArrayList<String> correctTime) {
        this.correctTimeList = correctTime;
    }

    @Override
    public void onBindViewHolder(@NonNull final ChipTimeViewHolder holder, final int position) {

        holder.time.setText(correctTimeList.get(position));

        holder.time.setChecked(lastPosition == position);



    }

    ArrayList<String> correctTimeList = new ArrayList<>();

    @Override
    public int getItemCount() {
        return correctTimeList.size();
    }

    class ChipTimeViewHolder extends RecyclerView.ViewHolder {

        RadioButton time;

        public ChipTimeViewHolder(@NonNull View itemView) {
            super(itemView);
            time = itemView.findViewById(R.id.item_time);

            time.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    lastPosition = getAdapterPosition();
                    notifyDataSetChanged();
                }
            });

        }

    }
}
公共类ChipDatesAdapter扩展了RecyclerView.Adapter{
ArrayList日期字符串;
int lastSelectedPosition=0;
无效设置日期(ArrayList芯片ArrayList){
datesString=newArrayList();
datesString=芯片阵列列表;
}
@非空
@凌驾
public chipViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
LayoutInflater充气器=LayoutInflater.from(parent.getContext());
视图=充气机。充气(R.layout.item\u chip\u dates,parent,false);
返回新的芯片视图支架(视图);
}
@凌驾
公共无效onBindViewHolder(@NonNull final chipViewHolder holder,final int position){
holder.chip.setText(datesString.get(position));
holder.chip.setChecked(lastSelectedPosition==位置);
}
public static final String TAG=ChipDatesAdapter.class.getSimpleName();
@凌驾
public int getItemCount(){
返回日期字符串.size();
}
类chipViewHolder扩展了RecyclerView.ViewHolder{
芯片;
公共chipViewHolder(@NonNull View itemView){
超级(项目视图);
chip=itemView.findviewbyd(R.id.chip\u项);
chip.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
lastSelectedPosition=getAdapterPosition();
notifyDataSetChanged();
}
});
}
}
}
TimeAdapter.java

public class MainActivity extends AppCompatActivity {

    public static final String TAG = MainActivity.class.getSimpleName();
    ArrayList<String> setUpDatesList;

    RecyclerView dateRV;
    ChipDatesAdapter chipAdapter;

    RecyclerView timeRV;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setUpDatesList = new ArrayList<>();
        dateRV = findViewById(R.id.chip_group_rv);
        timeRV = findViewById(R.id.time_rv);


        setUpDates();
        setUpTimes();
    }

    ChipTimeAdapter chipTimeAdapter;
    ArrayList<String> timeArrayList = new ArrayList<>();

    void setUpTimes() {



        DateFormat df = new SimpleDateFormat("HH:mm");
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 10);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        int startDate = cal.get(Calendar.DATE);
        while (cal.get(Calendar.DATE) == startDate) {

            String timeIs = df.format(cal.getTime());
            System.out.println(timeIs);
            cal.add(Calendar.MINUTE, 30);
            timeArrayList.add(timeIs);
        }
        chipTimeAdapter = new ChipTimeAdapter(timeArrayList);


        timeRV.setAdapter(chipTimeAdapter);
        timeRV.setLayoutManager(new GridLayoutManager(this,4));

    }

    void setUpDates() {
        chipAdapter = new ChipDatesAdapter();
        Calendar getAll30DaysCalendar = Calendar.getInstance();
        for (int i = 0; i < 31; i++) {
            SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault());
            String formattedDate = df.format(getAll30DaysCalendar.getTime());
            setUpDatesList.add(formattedDate);
            System.out.println(formattedDate.substring(0, 6));
            getAll30DaysCalendar.add(Calendar.DATE, 1);
        }
        chipAdapter.setUpDates(setUpDatesList);
        dateRV.setAdapter(chipAdapter);
        dateRV.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
    }
}
public class ChipDatesAdapter extends RecyclerView.Adapter<ChipDatesAdapter.chipViewHolder> {

    ArrayList<String> datesString;
    int lastSelectedPosition = 0;

    void setUpDates(ArrayList<String> chipArrayList) {
        datesString = new ArrayList<>();
        datesString = chipArrayList;
    }


    @NonNull
    @Override
    public chipViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.item_chip_dates, parent, false);

        return new chipViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final chipViewHolder holder, final int position) {

        holder.chip.setText(datesString.get(position));

        holder.chip.setChecked(lastSelectedPosition == position);

    }

    public static final String TAG = ChipDatesAdapter.class.getSimpleName();

    @Override
    public int getItemCount() {
        return datesString.size();
    }

    class chipViewHolder extends RecyclerView.ViewHolder {

        Chip chip;


        public chipViewHolder(@NonNull View itemView) {
            super(itemView);
            chip = itemView.findViewById(R.id.chip_item);

            chip.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    lastSelectedPosition = getAdapterPosition();
                    notifyDataSetChanged();
                }
            });

        }
    }

}
public class ChipTimeAdapter extends RecyclerView.Adapter<ChipTimeAdapter.ChipTimeViewHolder> {

    int lastPosition = -1;

    @NonNull
    @Override
    public ChipTimeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View view = layoutInflater.inflate(R.layout.item_chip_time, parent, false);


        return new ChipTimeViewHolder(view);
    }

    ChipTimeAdapter(ArrayList<String> correctTime) {
        this.correctTimeList = correctTime;
    }

    @Override
    public void onBindViewHolder(@NonNull final ChipTimeViewHolder holder, final int position) {

        holder.time.setText(correctTimeList.get(position));

        holder.time.setChecked(lastPosition == position);



    }

    ArrayList<String> correctTimeList = new ArrayList<>();

    @Override
    public int getItemCount() {
        return correctTimeList.size();
    }

    class ChipTimeViewHolder extends RecyclerView.ViewHolder {

        RadioButton time;

        public ChipTimeViewHolder(@NonNull View itemView) {
            super(itemView);
            time = itemView.findViewById(R.id.item_time);

            time.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    lastPosition = getAdapterPosition();
                    notifyDataSetChanged();
                }
            });

        }

    }
}
公共类ChipTimeAdapter扩展了RecyclerView.Adapter{
int lastPosition=-1;
@非空
@凌驾
public ChipTimeViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
LayoutInflater LayoutInflater=LayoutInflater.from(parent.getContext());
视图=布局平坦。充气(R.layout.item\u chip\u time,parent,false);
返回新芯片TimeViewHolder(视图);
}
ChipTimeAdapter(ArrayList correctTime){
this.correctTimeList=correctTime;
}
@凌驾
公共无效onBindViewHolder(@NonNull final ChipTimeViewHolder,final int position){
holder.time.setText(correctTimeList.get(position));
holder.time.setChecked(lastPosition==位置);
}
ArrayList correctTimeList=新的ArrayList();
@凌驾
public int getItemCount(){
返回timelist.size();
}
类ChipTimeViewHolder扩展了RecyclerView.ViewHolder{
无线电按钮时间;
公共ChipTimeViewHolder(@NonNull View itemView){
超级(项目视图);
时间=itemView.findViewById(R.id.item\u时间);
time.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
lastPosition=getAdapterPosition();
notifyDataSetChanged();
}
});
}
}
}
活动\u main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:id="@+id/linear_layout"
    android:layout_height="match_parent"
    android:layout_width="match_parent">



        <androidx.recyclerview.widget.RecyclerView
            android:layout_width="match_parent"
            android:id="@+id/chip_group_rv"
            android:layout_margin="8dp"
            android:layout_height="wrap_content">

        </androidx.recyclerview.widget.RecyclerView>

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:id="@+id/time_rv"
        android:layout_margin="8dp"
        android:layout_height="wrap_content">

    </androidx.recyclerview.widget.RecyclerView>

</LinearLayout>
 <com.google.android.material.chip.Chip android:layout_width="wrap_content"
    android:id="@+id/chip_item"
    android:layout_height="wrap_content"
    android:gravity="center"


    android:layout_margin="8dp"
    style="@style/Widget.MaterialComponents.Chip.Choice"
    android:textAppearance="?android:attr/textAppearance"

    app:chipBackgroundColor="@color/bg_chip_color_selector_state"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:focusable="true">

</com.google.android.material.chip.Chip>
<RadioButton android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@android:color/transparent"
    android:id="@+id/item_time"

    android:layout_marginStart="8dp"
    android:textColor="@color/selector_time"
    android:fontFamily="@font/montserrat_medium_0"
    xmlns:android="http://schemas.android.com/apk/res/android">

</RadioButton>

item\u chips\u date.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:id="@+id/linear_layout"
    android:layout_height="match_parent"
    android:layout_width="match_parent">



        <androidx.recyclerview.widget.RecyclerView
            android:layout_width="match_parent"
            android:id="@+id/chip_group_rv"
            android:layout_margin="8dp"
            android:layout_height="wrap_content">

        </androidx.recyclerview.widget.RecyclerView>

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:id="@+id/time_rv"
        android:layout_margin="8dp"
        android:layout_height="wrap_content">

    </androidx.recyclerview.widget.RecyclerView>

</LinearLayout>
 <com.google.android.material.chip.Chip android:layout_width="wrap_content"
    android:id="@+id/chip_item"
    android:layout_height="wrap_content"
    android:gravity="center"


    android:layout_margin="8dp"
    style="@style/Widget.MaterialComponents.Chip.Choice"
    android:textAppearance="?android:attr/textAppearance"

    app:chipBackgroundColor="@color/bg_chip_color_selector_state"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:focusable="true">

</com.google.android.material.chip.Chip>
<RadioButton android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@android:color/transparent"
    android:id="@+id/item_time"

    android:layout_marginStart="8dp"
    android:textColor="@color/selector_time"
    android:fontFamily="@font/montserrat_medium_0"
    xmlns:android="http://schemas.android.com/apk/res/android">

</RadioButton>

item\u chips\u time.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:id="@+id/linear_layout"
    android:layout_height="match_parent"
    android:layout_width="match_parent">



        <androidx.recyclerview.widget.RecyclerView
            android:layout_width="match_parent"
            android:id="@+id/chip_group_rv"
            android:layout_margin="8dp"
            android:layout_height="wrap_content">

        </androidx.recyclerview.widget.RecyclerView>

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:id="@+id/time_rv"
        android:layout_margin="8dp"
        android:layout_height="wrap_content">

    </androidx.recyclerview.widget.RecyclerView>

</LinearLayout>
 <com.google.android.material.chip.Chip android:layout_width="wrap_content"
    android:id="@+id/chip_item"
    android:layout_height="wrap_content"
    android:gravity="center"


    android:layout_margin="8dp"
    style="@style/Widget.MaterialComponents.Chip.Choice"
    android:textAppearance="?android:attr/textAppearance"

    app:chipBackgroundColor="@color/bg_chip_color_selector_state"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:focusable="true">

</com.google.android.material.chip.Chip>
<RadioButton android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@android:color/transparent"
    android:id="@+id/item_time"

    android:layout_marginStart="8dp"
    android:textColor="@color/selector_time"
    android:fontFamily="@font/montserrat_medium_0"
    xmlns:android="http://schemas.android.com/apk/res/android">

</RadioButton>