Getting Problem In RecycleView with TextInputEditText

Tags: , ,



I am a new Programmer, actually I was trying to make an app. I was trying to make an activity that uses RecyclerView to Show TextInputEditText with spinner and TextView. It means that I was trying to make an activity that uses Recyclerview and In the layout of Recycler View, I have used Text Input Edit Text and Spinner and TextView. I have put these three in a single layout. But the main problem that I facing is that when I launch my app with my code then it remains blank activity it is not showing TextInputEditText nor spinner and nor TextView.

So the conclusion is I want to show [TextInputEditText, Spinner and TextView] in RecyclerView But my code is returning Blank Activity.

Here is my code:-

It is my adapter class:-

public class SpecialHoursAdapter extends RecyclerView.Adapter<SpecialHoursAdapter.SpecialHourHolder> {


//    private ArrayList[] mDataSet;

    private List<SpecialHorusModal> modal = new ArrayList<>();

    private Context context;

    public SpecialHoursAdapter(Context context) {
        this.context = context;
        

    }

    @NonNull
    @Override
    public SpecialHourHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.special_hours_layout_card, parent, false);
        return new SpecialHourHolder(view);
    }

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


    }

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

    public static class SpecialHourHolder extends RecyclerView.ViewHolder {

        private TextInputEditText editText;
        private Spinner spinner;
        private TextView textView;

        public SpecialHourHolder(@NonNull View itemView) {
            super(itemView);

            editText = itemView.findViewById(R.id.special_hours_editor);
            spinner = itemView.findViewById(R.id.spinner_special_hours_date);
            textView = itemView.findViewById(R.id.time_picker_special_horus);


        }
    }


}

It is My MainActivity:-

public class SpecialHoursActivity extends AppCompatActivity {
    private RecyclerView containerRecyclerView;
    private RecyclerView.LayoutManager first, container;
    private SpecialHoursAdapter adapter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_special_horus);




        //     mainRecyclerView = findViewById(R.id.activity_special_horus_main_recyclerview);
        containerRecyclerView = findViewById(R.id.layout_container_recyclerview_special_hours);

        //    mainRecyclerView.setHasFixedSize(true);
        containerRecyclerView.setHasFixedSize(true);

        first = new LinearLayoutManager(this);
        container = new LinearLayoutManager(this);


//        mainRecyclerView.setLayoutManager(first);
        containerRecyclerView.setLayoutManager(container);
        containerRecyclerView.setAdapter(adapter);

    }

}

Here is my RecyclerView Layout:-

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <com.google.android.material.textfield.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/special_hours_editor"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Enter Special Hours"
                android:inputType="text"
                android:maxLength="20" />

        </com.google.android.material.textfield.TextInputLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Spinner
                android:id="@+id/spinner_special_hours_date"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView
                android:id="@+id/time_picker_special_horus"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end"
                android:gravity="end"
                android:text="00:00" />

        </LinearLayout>

    </LinearLayout>

</androidx.cardview.widget.CardView>

My Main Layout –

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_special_horus_main_recyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:scrollbars="vertical">


    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/layout_container_recyclerview_special_hours"
        android:orientation="vertical"
        android:scrollbars="vertical">


    </androidx.recyclerview.widget.RecyclerView>

</RelativeLayout>

I have not used any modal class because I don’t know how to use it with Widgets.

Answer

you need to pass the data to your adapter

public SpecialHoursAdapter(Context context,List<SpecialHorusModal> data) {
    this.context = context;
    this.model=data; //it will show your recyclerview  
   
}

we could not show the Recyclerview with empty data



Source: stackoverflow