1 Step XML create
//--------------------------------------------Code
Detail and Working---------------------------------------------------------
//============================java
Code Start =========================================
2 Step Show Recycerview in XLM page tag
//--------------------------------------------Code
Detail and Working---------------------------------------------------------
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/Recycerview_admin_home"/>
//============================java
Code Start =========================================
3 Step create Recycerview Adapter
//--------------------------------------------Code
Detail and Working---------------------------------------------------------
public class AdminHomeAdapter extends RecyclerView.Adapter<AdminHomeAdapter.AdminHomeViewHolder>{
class AdminHomeViewHolder
extends RecyclerView.ViewHolder {
AdminHomeVenueCellBinding binding;//<----
public AdminHomeViewHolder(
@NonNull AdminHomeVenueCellBinding
itemView) {
super(itemView.getRoot());
binding = itemView;//<----
}
}
}
=========================================================================
=========================================================================

=========================================================================
private ArrayList<Venue>
VenueList;
private Context context;
public AdminHomeAdapter(ArrayList<Venue>
VenueList, Context context) {
this.VenueList = VenueList;
this.context
= context;
}
=========================================================================
AdminHomeVenueCellBinding b
=AdminHomeVenueCellBinding.
inflate(LayoutInflater
.from(parent.getContext()),
parent, false);
AdminHomeViewHolder vh = new AdminHomeViewHolder(b);
return vh;
=========================================================================
Venue obj = VenueList.get(position);
holder.binding.textViewVenue1.setText(obj.getNAME()+"");
holder.binding.textViewVenue2.setText(obj.getNAME()+"");
=========================================================================
return VenueList.size();
//============================java
Code Start =========================================
4
Step calling Adapter
//--------------------------------------------Code
Detail and Working---------------------------------------------------------
ArrayList<Venue> data = new ArrayList<Venue>();
data.add(new Venue(1,"Lab 1"));
data.add(new Venue(1,"Lab 2"));
data.add(new Venue(1,"Lab 3"));
AdminHomeAdapter adapter =
new
AdminHomeAdapter(data, getActivity());
Binding.RecycerviewAdminHome.
setAdapter(adapter);
=========================fragment working
code==================================
ArrayList<MEYE_USER> data = new ArrayList<MEYE_USER>();
data.add(new MEYE_USER());
data.get(0).setNAME("Ali");
data.add(new MEYE_USER());
data.get(1).setNAME("Zahid");
AdminHomeAdapter adapter = new
AdminHomeAdapter(data, getActivity());
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
Binding.RecycerviewAdminHome.setLayoutManager(manager);
Binding.RecycerviewAdminHome.setHasFixedSize(true);
Binding.RecycerviewAdminHome.
setAdapter(adapter);
//============================java
Code Start =========================================
=================Information---------------------------------------------------------------------
//============================java
Code Start =========================================
Recycler
view create One Row Multiple Horizontal use bind function
---------------------------xml recyclerview cell code add -------------------------------------
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lineraLayout">
</LinearLayout>
//--------------------------------------------Code
Detail and Working---------------------------------------------------------
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.bind(position);
}
=======================================Recyclerview========================
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView cameraName;
public SurfaceView cameraSurfaceView;
LinearLayout linearLayout;
TextView textView ;
public ViewHolder(View view) {
super(view);
// cameraName = view.findViewById(R.id.camera_name);
cameraSurfaceView = view.findViewById(R.id.camera_surface_view);
textView = view.findViewById(R.id.text_view);
linearLayout=view.findViewById(R.id.lineraLayout);
}
public void bind(int position) {
linearLayout.removeAllViews();
for (int i = 1; i <= 5 + 1; i++) {
EditText editText = new EditText(itemView.getContext());
editText.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
editText.setHint("EditText " + i);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
Toast.makeText(itemView.getContext(), "EditText " +charSequence, Toast.LENGTH_SHORT).show();
}
@Override
public void afterTextChanged(Editable editable) {
// Toast.makeText(itemView.getContext(), "EditText " +editable, Toast.LENGTH_SHORT).show();
}
});
// editText.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// Toast.makeText(itemView.getContext(), "EditText " +, Toast.LENGTH_SHORT).show();
// }
// });
linearLayout.addView(editText);
}
}
}
//============================java
Code Start =========================================
Recycler
view Cell space manage with java code
//--------------------------------------------Code
Detail and Working---------------------------------------------------------
@NonNull
@Override
public
viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view=
LayoutInflater.from(context).inflate(R.layout.category_cell,parent,false);
ViewGroup.MarginLayoutParams layoutParams =
(ViewGroup.MarginLayoutParams) view.getLayoutParams();
layoutParams.setMargins(-15, -6, -98, 0);
// Set margin to 8dp or your desired value
view.setLayoutParams(layoutParams);
return new
viewHolder(view);
}
//============================java
Code Start =========================================
Create RecyclerView main Logic FreeSlot in android
Code RecyclerView
ArrayList<String> uniqueStartTimes= new ArrayList<>();
ArrayList<String> uniqueEndTimes= new ArrayList<>();
ArrayList<String> uniqueDays= new ArrayList<>();
ArrayList<String> uniqueVenue= new ArrayList<>();
ArrayList<HashMap<String, ArrayList<String>>> venueMap = new ArrayList<>();
Spinner[][] allSpinners = new Spinner[uniqueDays.size()][uniqueDays.size()];
//calling rows show
@Override
public void onBindViewHolder(@NonNull AdminScheduleFreeSlotViewHolder holder, int position) {
if(position==0){
holder.bindDays(position);
}
holder.bind(position);
String obj = uniqueStartTimes.get(position);
}
class AdminScheduleFreeSlotViewHolder extends RecyclerView.ViewHolder {
RecyclerviewRescheduleFreeSlotCellBinding binding;//<----
public AdminScheduleFreeSlotViewHolder(
@NonNull RecyclerviewRescheduleFreeSlotCellBinding itemView) {
super(itemView.getRoot());
binding = itemView;//<----
}
//create column in row
public void bind(int RowPosition) {
binding.linearLayoutFreeSlot.removeAllViews();
TextView textView = new TextView(context);
// Set the text
textView.setText(uniqueStartTimes.get(RowPosition)+"\n"+uniqueEndTimes.get(RowPosition));
// Set the width and height
int width = ViewGroup.LayoutParams.WRAP_CONTENT;; // in pixels
int height =150;
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height);
textView.setLayoutParams(layoutParams);
// Set the gravity and layout gravity
textView.setGravity(Gravity.CENTER);
binding.linearLayoutFreeSlot.addView(textView);
//create Spinner
Spinner[] spinners = new Spinner[uniqueDays.size()];
String[][] items = new String[uniqueDays.size()][];
for (int i = 0; i < spinners.length; i++) {
TableRow.LayoutParams params = new TableRow.LayoutParams(
220,
TableRow.LayoutParams.MATCH_PARENT, 1f);
params.gravity = Gravity.RIGHT;
// Create Spinners for each TableRow
Spinner spinner = new Spinner(context);
spinner.setLayoutParams(params);
// unique venue
List<String> timeTables1= new ArrayList<>();
final int finalvalue=i;
timeTables1.add("");
timeTables1.addAll(uniqueVenue);
for (TimeTable t :TimeTableList){
if (t.getStarttime().toString().equals(uniqueStartTimes.get(RowPosition)) ) {
if (t.getDay().equals(uniqueDays.get(finalvalue))) {
if(timeTables1.equals(t.getVenue()));
timeTables1.remove(t.getVenue());
}
}
}
// use linq i
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// timeTables1 = uniqueVenue.stream()
// .filter(venue -> TimeTableList.stream()
// .noneMatch(t -> t.getStarttime().equals(uniqueStartTimes.get(RowPosition))
// && t.getDay().equals(uniqueDays.get(finalvalue))
// && t.getVenue().equals(venue)))
// .collect(Collectors.toList());
// }
items[i] = timeTables1.toArray(new String[0]);
// items[i] = new String[]{"", "Spinner " + i + " Item 1", "Spinner " + i + " Item 2", "Spinner " + i + " Item 3"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(itemView.getContext(), android.R.layout.simple_spinner_dropdown_item, items[i]);
// adapter.setDropDownViewResource(R.layout.spinner_layout_timetable);
spinner.setAdapter(adapter);
final int finalI = i;
// Drawable drawable = ContextCompat.getDrawable(itemView.getContext(), R.drawable.teacher_recyclerview_background_cell);
// spinner.setBackground(drawable);
// spinner.setBackgroundResource(R.drawable.teacher_recyclerview_background_cell);
spinners[i] = spinner;
allSpinners[RowPosition][i] = spinner; // Store the spinner in the array
Spinner emptySpinner = spinners[i];
emptySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
AdminScheduleReScheduleFreeSlotActivity reschedule= (AdminScheduleReScheduleFreeSlotActivity) context;
reschedule.recyclerviewSelectVenueDrowpdown(emptySpinner.getSelectedItem().toString(),context );
if (position != 0) {
// Disable all other spinners
for (int row = 0; row < allSpinners.length; row++) {
for (int col = 0; col < allSpinners[row].length; col++) {
Spinner spinner = allSpinners[row][col];
if (spinner != null && spinner.getSelectedItem().toString().equals("")) {
// Disable empty spinner
spinner.setEnabled(false);
} else if (row != RowPosition || col != finalI) {
// Disable non-selected spinners
spinner.setEnabled(false);
} else {
// Enable selected spinner
spinner.setEnabled(true);
}
}
}
Toast.makeText(context, "" + emptySpinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
} else {
// Enable all spinners
for (int row = 0; row < allSpinners.length; row++) {
for (int col = 0; col < allSpinners[row].length; col++) {
Spinner spinner = allSpinners[row][col];
if (spinner != null) {
spinner.setEnabled(true);
}
}
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
binding.linearLayoutFreeSlot.addView(spinner);
}
}
//create end
public void bindDays(int position) {
binding.linearLayoutDayOfName.removeAllViews();
TextView textViewFirst = new TextView(itemView.getContext());
textViewFirst.setLayoutParams(new LinearLayout.LayoutParams(
120,
140,1f));
// Set the gravity and layout gravity
textViewFirst .setGravity(Gravity.CENTER);
binding.linearLayoutDayOfName.addView(textViewFirst);
for (int i = 0; i < uniqueDays.size(); i++) {
TextView textView = new TextView(itemView.getContext());
textView.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
100,1f));
textView.setBackgroundResource(R.drawable.teacher_recyclerview_background_cell);
textView.setTypeface(null, Typeface.BOLD);
textView .setGravity(Gravity.CENTER);
textView.setText(uniqueDays.get(i));
binding.linearLayoutDayOfName.addView(textView);
}
}
}
Create RecyclerView main Logic create cell in android
Code RecyclerView
ArrayList<String> uniqueStartTimes= new ArrayList<>();
ArrayList<String> uniqueEndTimes= new ArrayList<>();
ArrayList<String> uniqueDays= new ArrayList<>();
ArrayList<TimeTable> TimeTableSchrduleList;
public AdminTimeTableScheduleAdapter(ArrayList<TimeTable> TimeTableList, Context context) {
this.TimeTableList = TimeTableList;
this.context = context;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
uniqueStartTimes.addAll(TimeTableList.stream().distinct().map(t -> t.getStarttime()).distinct().collect(Collectors.toList()));
uniqueEndTimes.addAll(TimeTableList.stream().distinct().map(t -> t.getEndtime()).distinct().collect(Collectors.toList()));
uniqueDays.addAll(TimeTableList.stream().distinct().map(t -> t.getDay()).distinct().collect(Collectors.toList()));
}
}@Override
public void onBindViewHolder(@NonNull AdminTimeTableScheduleViewHolder holder, int position) {
//row one only
if(position==0){
holder.bindDays(position);
}
String obj = uniqueStartTimes.get(position);
//multiple column create
holder.bind(position);
}
//show Rows
class AdminTimeTableScheduleViewHolder extends RecyclerView.ViewHolder {
RecyclerviewTimetableScheduleCellBinding binding;//<----
public AdminTimeTableScheduleViewHolder(
@NonNull RecyclerviewTimetableScheduleCellBinding itemView) {
super(itemView.getRoot());
binding = itemView;//<----
}
// row one Day Name
public void bindDays(int position) {
binding.linearLayoutDayOfName.removeAllViews();
// Create the first TextView with a width of 0 and weight of 1 to distribute equal width
TextView textViewFirst = new TextView(itemView.getContext());
TableRow.LayoutParams firstParams = new TableRow.LayoutParams(
98, TableRow.LayoutParams.MATCH_PARENT);
textViewFirst.setLayoutParams(firstParams);
textViewFirst.setGravity(Gravity.CENTER);
binding.linearLayoutDayOfName.addView(textViewFirst);
// Create the remaining TextViews with equal width and a margin of 5dp between them
for (int i = 0; i < uniqueDays.size(); i++) {
TextView textView = new TextView(itemView.getContext());
TableRow.LayoutParams params = new TableRow.LayoutParams(
0, TableRow.LayoutParams.MATCH_PARENT, 1f);
// params.setMarginStart((int) itemView.getContext().getResources().getDimension(R.dimen.spacing_xxlarge));
textView.setLayoutParams(params);
textView.setBackgroundResource(R.drawable.teacher_recyclerview_background_cell);
textView.setTypeface(null, Typeface.BOLD);
textView.setGravity(Gravity.CENTER);
textView.setText(uniqueDays.get(i).substring(0, 3));
textView.setTextSize(18);
binding.linearLayoutDayOfName.addView(textView);
}
}
//end row of Days
// start Stat Time And End Time
public void bind(int RowPosition) {
binding.linearLayoutTimeTableSchedule.removeAllViews();
TextView textViewFirst = new TextView(context);
// Set the text
textViewFirst.setText(uniqueStartTimes.get(RowPosition)+"\n"+uniqueEndTimes.get(RowPosition));
// Set the width and height
int width = ViewGroup.LayoutParams.WRAP_CONTENT;; // in pixels
int height =200;
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height);
textViewFirst.setLayoutParams(layoutParams);
/// Set the gravity and layout gravity
textViewFirst.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
textViewFirst.setForegroundGravity(Gravity.CENTER);
}
// // Create a TableRow to contain the TextViews
// TableRow tableRow = new TableRow(itemView.getContext());
// tableRow.setLayoutParams(new ViewGroup.LayoutParams(
// ViewGroup.LayoutParams.MATCH_PARENT,
// ViewGroup.LayoutParams.WRAP_CONTENT));
binding.linearLayoutTimeTableSchedule.addView(textViewFirst);
for (int i = 0; i < uniqueDays.size(); i++) {
TableRow.LayoutParams params = new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
200, 1f);
params.gravity = Gravity.RIGHT;
TextView textView = new TextView(itemView.getContext());
textView.setLayoutParams(params);
textView.setTypeface(null, Typeface.BOLD);
textView .setGravity(Gravity.CENTER);
//enter TextView Data
for (TimeTable timeTable :TimeTableSchrduleList){
if (timeTable.getStarttime().toString().equals(uniqueStartTimes.get(RowPosition)) ) {
if (timeTable.getDay().equals(uniqueDays.get(i))) {
textView.setText(timeTable.getDiscipline()+"\n"+timeTable.getCourseName()+"\n"+timeTable.getVenue());
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, ""+textView.getText().toString(), Toast.LENGTH_SHORT).show();
}
});
}
}
}
//end enter TextView Data
// Add a ScrollView to the parent layout
ScrollView scrollView = new ScrollView(itemView.getContext());
scrollView.setLayoutParams(params);
scrollView.setVerticalScrollBarEnabled(true);
// Add the TextView to the ScrollView
scrollView.addView(textView);
scrollView.setBackgroundResource(R.drawable.teacher_recyclerview_background_cell);
// tableRow.addView(scrollView);
// textView.setMovementMethod(new ScrollingMovementMethod());
binding.linearLayoutTimeTableSchedule.addView(scrollView);
// binding.linearLayoutTimeTableSchedule.addView(textView);
}
// binding.linearLayoutTimeTableSchedule.addView(tableRow);
}
// End start Stat Time And End Time
}
Create RecyclerView with code EditText And count Column value main Logic create cell in android
Code RecyclerView
EditText[][] allEditTexts = new EditText[5][7];
int[][] array= new int[5][5];
//calling Create column in Row
holder.bind(position);
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView cameraName;
public SurfaceView cameraSurfaceView;
LinearLayout linearLayout;
TextView textView ;
public ViewHolder(View view) {
super(view);
// cameraName = view.findViewById(R.id.camera_name);
cameraSurfaceView = view.findViewById(R.id.camera_surface_view);
textView = view.findViewById(R.id.text_view);
linearLayout=view.findViewById(R.id.lineraLayout);
}
public void bind(int position) {
linearLayout.removeAllViews();
TableRow tableRow = new TableRow(context);
tableRow.setLayoutParams(new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT
));
for (int i = 0; i < 5; i++) {
TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(
0, TableRow.LayoutParams.WRAP_CONTENT, 1f);
EditText editText = new EditText(itemView.getContext());
editText.setLayoutParams(layoutParams);
editText.setHint("Text " + i);
int finalI = i;
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if(charSequence.length()>0) {
try {
array[position][finalI] = Integer.parseInt(charSequence.toString());
int columnIndex = finalI; // specify the column index you want to count
int count = 0;
for (int CountIndex = 0; CountIndex < array.length; CountIndex++) {
count += array[CountIndex][columnIndex];
}
Toast.makeText(context, "" + count, Toast.LENGTH_SHORT).show();
System.out.println("The total count of column " + columnIndex + " is " + count);
} catch (NumberFormatException e) {
Toast.makeText(context, "Invalid input", Toast.LENGTH_SHORT).show();
}
}else array[position][finalI] = 0;
}
// Toast.makeText(itemView.getContext(), "EditText " +charSequence+"2D ["+position+"]["+col+"]", Toast.LENGTH_SHORT).show();
}
@Override
public void afterTextChanged(Editable editable) {
// Toast.makeText(itemView.getContext(), "EditText " +editable, Toast.LENGTH_SHORT).show();
}
});
tableRow.addView(editText);
allEditTexts[position][i] = editText; // Store the EditText in the array
}
linearLayout.addView(tableRow);
}
EditText Search Recycler View item Code
//recyclerview search code
Binding.editTextAdminViewSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
// Toast.makeText(getContext(), ""+editable, Toast.LENGTH_SHORT).show();
ArrayList<MEYE_USER> filteredList = new ArrayList<>();
for (MEYE_USER item : data) {
if (item.getName().toLowerCase().contains(editable.toString().toLowerCase())) {
filteredList.add(item);
}
}
AdminViewTeacherAdapter adaptersearch = new
AdminViewTeacherAdapter(filteredList, getActivity(), ViewTeacherFragment.this,"ViewTeacherFragment");
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
Binding.RecycerviewAdminViewTeacher.setLayoutManager(manager);
// Binding.RecycerviewAdminViewTeacher.setHasFixedSize(true);
Binding.RecycerviewAdminViewTeacher.
setAdapter(adaptersearch);
// recyclerview function calling
// adapter.filterList(filteredList);
}
});
Notify the adapter that the data has changed to update the RecyclerView's
Recyclerview in java add code
public void filterList(ArrayList<MEYE_USER> filteredList) {
TeacherList = filteredList;
notifyDataSetChanged();
}
Swapping Gesture Adapter code
public static class SwipeMenuCallback extends ItemTouchHelper.SimpleCallback {
private AdminSettingDVRChannelAdapter adapter;
public SwipeMenuCallback(AdminSettingDVRChannelAdapter adapter) {
super(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
this.adapter = adapter;
}
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
adapter.removeItem(position);
}
@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder,
float dX, float dY, int actionState, boolean isCurrentlyActive) {
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
// Get the swipe menu layout for the current item
View swipeMenuLayout = viewHolder.itemView.findViewById(R.id.rowBG);
// Adjust the swipe menu layout's position based on the swiping gesture
swipeMenuLayout.setTranslationX(dX);
} else {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
}
}
adapter calling bind code
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new AdminSettingDVRChannelAdapter.SwipeMenuCallback(adapter));
itemTouchHelper.attachToRecyclerView(Binding.RecycerviewAdminSettingDVRChannel);