0

RecyclerView を StaggeredGridLayoutManager と共に使用して、アプリケーションでコースのテーブルを表示していますが、下の図のように問題ありませんでした。

ここに画像の説明を入力

しかし、下の図のように、2 行目のすべてのアイテムが同じ行で始まるように調整するにはどうすればよいですか。 ここに画像の説明を入力

これは私のフラグメントの 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;
    }
}

そして、これは Adapter 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);
        }
    }
}

そしてこれがfragment_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>

私を助けてください、私はこの問題にすべての時間を費やしましたが、同様のものは得られません

4

1 に答える 1

2

添付のスクリーンショットから、ケースにはStaggeredGridLayoutManagerの代わりにGridLayoutManagerが必要なようです。 あなたの場合に必要な列の数を見つけて (3/4、必要に応じて、デバイスの幅に応じて動的に計算できます)、layout-manager を次のように設定します。

// Assuming there'll be 3 columns
GridLayoutManager glm = new GridLayoutManager(getActivity(), 3);
recyclerView.setLayoutManager(glm);
于 2016-10-10T14:37:37.793 に答える