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"= " 안드로이드 : layout_width ="match_parent " 안드로이드 : 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 " 안드로이드 : layout_width ="wrap_content " 안드로이드 : layout_height ="wrap_content " 도구 : 문맥 = ".GridItemActivity" > < 텍스트 뷰의 로이드 : 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 뷰 그룹 부모 값 int viewType) { 돌아가 새로운 GridViewHolder을 (LayoutInflater.from (컨텍스트) .inflate (R.layout.activity_grid_item, 부모, 거짓 )); } @Override 공공 무효 onBindViewHolder (@NonNull GridAdapter.GridViewHolder 홀더, 최종 INT의 위치) { holder.tv.setText ( 에 "Hello World" ); holder.tv.setOnClickListener ( 새 View.OnClickListener () { @Override itemView.findViewById (R.id.textView3);공공 무효 의 onclick (보기보기) { Toast.makeText (문맥, + "... 클릭" ) .show (위치, Toast.LENGTH_SHORT를); } }); } @Override 공공 INT 는, getItemCount () { 반환 (30) ; } 클래스 GridViewHolder는 확장 RecyclerView.ViewHolder { 개인 텍스트 뷰의 TV를; 공공 GridViewHolder (@NonNull보기 itemView) { 슈퍼 (itemView); TV = } } }
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)의 효과 :