그리드 레이아웃의 안드로이드 RecyclerView 케이스

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)의 효과 :

 

추천

출처www.cnblogs.com/zoro-zero/p/11407867.html