Совместите элементы RecyclerView в каждой строке в Android

Я использую RecyclerView с StaggeredGridLayoutManager, чтобы показать таблицы курсов в моем приложении, и это было нормально, как на картинке ниже:

Но, как я могу настроить все элементы второго ряда, чтобы они начинались с одной строки, как на картинке ниже:

Это мой метод onCreateView() в моем фрагменте:

   

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_orders, container, false);


        recyclerView = (RecyclerView) rootView.findViewById(R.id.recycleView);
        adapter = new MyCustomAdapter(getActivity(), Data.getData());
        recyclerView.setAdapter(adapter);
        // First param is number of columns and second param is orientation i.e Vertical or Horizontal
        StaggeredGridLayoutManager gridLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(gridLayoutManager);
       
        return rootView;
    }
}

И это может адаптер MyCustomAdapter.java:

public class MyCustomAdapter extends RecyclerView.Adapter<MyCustomAdapter.MyViewHolder> {

    private Context _context;
    private ArrayList<Information> data;
    private LayoutInflater inflater;
    private int previousPosition = 0;
  
    public MyCustomAdapter(Context context, ArrayList<Information> data) {

        this._context = context;
        this.data = data;
        inflater = LayoutInflater.from(context);
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int position) {

        View view = inflater.inflate(R.layout.orders_row, parent, false);

        MyViewHolder holder = new MyViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder myViewHolder, final int position) {

        if(position == 1){
            create_tablelayout(myViewHolder.itemView,position,3);
        }else if(position == 3){
            create_tablelayout(myViewHolder.itemView,position,8);
        }else if(position == 5){
            create_tablelayout(myViewHolder.itemView,position,1);
        }else
            create_tablelayout(myViewHolder.itemView,position,5);

        myViewHolder.num_tab.setText("Table # " + data.get(position).id);
        myViewHolder.server.setText(data.get(position).server);
      

        final Information infoData = data.get(position);

    }

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

    class MyViewHolder extends RecyclerView.ViewHolder{

        TextView num_tab;
        TextView server;

        public MyViewHolder(View itemView) {
            super(itemView);

            num_tab = (TextView) itemView.findViewById(R.id.num_table);
            server = (TextView) itemView.findViewById(R.id.server);

        }
    }

   
        /* Find Tablelayout defined in main.xml */
        TableLayout tablelayout = (TableLayout) convertView.findViewById(R.id.itemtablelayout);
        tablelayout.removeAllViews();
        for(int i = 0;i<nbr_item; i++) {
            // Creating a new TextView
            TextView Order1 = new TextView(_context);
            Order1.setText("TESSST");
            Order1.setTextColor(Color.parseColor("#FF9900"));
            Order1.setTextSize(10);
            Order1.setLayoutParams(new TableRow.LayoutParams
                    (LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
            //===================

            //Prepare TableRow to be inserted
            TableRow row = new TableRow(_context);
            row.addView(Order1);
            row.setPadding(4,4,4,4);
            row.setGravity(Gravity.CENTER);
            row.setLayoutParams(new TableLayout.LayoutParams
                    (LinearLayout.LayoutParams.MATCH_PARENT,
                            LinearLayout.LayoutParams.WRAP_CONTENT));


            tablelayout.addView(row);
        }
    }
}

И это Фрагмент_orders.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/gray">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dp"
    android:orientation="vertical">

    <LinearLayout
        android:layout_marginTop="10dp"
        android:layout_width="match_parent"
        android:background="@color/white"
        android:layout_height="50dp">
    </LinearLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycleView"
        android:paddingLeft="@dimen/space"
        android:paddingRight="@dimen/space"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>

</LinearLayout>

</LinearLayout>

Пожалуйста, помогите мне, я потратил все свое время на эту проблему, но я не могу получить ничего подобного

1 ответ

Из прикрепленных скриншотов ваш случай, по-видимому, нуждается в GridLayoutManager вместо StaggeredGridLayoutManager.
Определите необходимое количество столбцов в вашем случае (3/4, при необходимости это может быть динамически рассчитано в соответствии с шириной устройства), а затем установите менеджер компоновки следующим образом:

// Assuming there'll be 3 columns
GridLayoutManager glm = new GridLayoutManager(getActivity(), 3);
recyclerView.setLayoutManager(glm);
Другие вопросы по тегам