1、最初activity_grid.xmlとactivity_grid_item.xmlを作成
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < androidx.constraintlayout.widget.ConstraintLayout のxmlns:アンドロイド= "http://schemas.android.com/apk/res/android" のxmlns:アプリ= "HTTP ://schemas.android.com/apk/res-auto」 のxmlns:ツール= "http://schemas.android.com/tools" のandroid:layout_width = "match_parent" のandroid:layout_height = "match_parent" ツール:コンテキスト= ".GridActivity" > < androidx.recyclerview.widget.RecyclerView アンドロイド:ID = "@ + ID / RV2" アンドロイド:layout_width =」= "match_parent" ツール:layout_editor_absoluteX = "103dp" ツール:layout_editor_absoluteY = "44dp" /> </ androidx.constraintlayout.widget.ConstraintLayout >
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < androidx.constraintlayout.widget.ConstraintLayout のxmlns:アンドロイド= "http://schemas.android.com/apk/res/android" のxmlns:アプリ= "HTTP :「//schemas.android.com/apk/res-auto :ツールのxmlns = "http://schemas.android.com/tools" のandroid:layout_width = "wrap_content" のandroid:layout_height = "wrap_content" ツール:コンテキスト= ".GridItemActivity" > < のTextViewの アンドロイド:ID = "@ + ID / textView3" アンドロイド:layout_width = "50dp" アンドロイド:テキスト= "@文字列/ textview2" アプリ:layout_constraintBottom_toBottomOf = "親" アプリ:layout_constraintEnd_toEndOf = "親" アプリ:layout_constraintStart_toStartOf = "親" アプリ:layout_constraintTop_toTopOf = "親" /> </ androidx.constraintlayout.widget.ConstraintLayout >
2、アダプタを作成
パッケージcom.example.myapplication。 輸入android.content.Context; 輸入android.view.LayoutInflater; 輸入android.view.View。 輸入android.view.ViewGroup; 輸入android.widget.TextView。 輸入android.widget.Toast; 輸入androidx.annotation.NonNull; 輸入androidx.recyclerview.widget.RecyclerView。 パブリック クラス GridAdapterは拡張 RecyclerView.Adapter <GridAdapter.GridViewHolder> { プライベートコンテキストコンテキストを。 公共GridAdapter(コンテキスト・コンテキスト){ この.context = 文脈。 } @NonNull @Override 公共 GridAdapter.GridViewHolder onCreateViewHolder(@NonNullのViewGroup親、INT ビュータイプ){ 戻り 新しい GridViewHolder(LayoutInflater.from(コンテキスト).inflate(R.layout.activity_grid_item、親、偽の))。 } @Override 公共 ボイド(@NonNull GridAdapter.GridViewHolderホルダー、onBindViewHolder 最終 INT 位置){ holder.tv.setText( "Hello World"の)。 holder.tv.setOnClickListener(新しいView.OnClickListener(){ @Override 公共 のボイドのonClick(ビュービュー){ Toast.makeText(コンテキスト、 + "...クリック" の位置を、Toast.LENGTH_SHORT).SHOW(); } })。 } @Override 公共 のint getItemCount(){ 返す 30 。 } クラス GridViewHolderは延びRecyclerView.ViewHolder { プライベートのTextViewテレビ; 公共GridViewHolder(@NonNullビューitemView){ スーパー(itemView)。 TV = itemView.findViewById(R.id.textView3)。 } } }
3、GridActivity.java
パッケージcom.example.myapplication。 輸入androidx.appcompat.app.AppCompatActivity。 輸入androidx.recyclerview.widget.GridLayoutManager。 輸入androidx.recyclerview.widget.RecyclerView。 輸入android.os.Bundle; パブリック クラス GridActivityは拡張AppCompatActivity { プライベートRecyclerViewのRVを、 @Override 保護された ボイドのonCreate(バンドルsavedInstanceState){ スーパー.onCreate(savedInstanceState)。 setContentView(R.layout.activity_grid)。 RV = findViewById(R.id.rv2)。 rv.setLayoutManager(新GridLayoutManager(GridActivity。本、3 ))。 rv.setAdapter(新しい GridAdapter(GridActivity。この)); } }
4の効果: