GridLayoutManagerでRecyclerViewを使用した単純なAndroidグリッドの例
リサイクラービューの例のグリッドレイアウトマネージャーに入る前に、Androidのリサイクラービューとは何かを知っておく必要があります。リサイクラービューはリストビューのより高度なバージョンであり、ビューホルダーのデザインパターンに基づいて機能します。リサイクラービューを使用して、グリッドとアイテムのリストを表示できます。
この例は、年齢とともに学生の名前を表示する美しい学生記録アプリを作成することにより、リサイクラービューをグリッドレイアウトマネージャーと統合する方法を示しています。
ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。
ステップ2 − build.gradleを開き、Recyclerビューライブラリの依存関係を追加します。
apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "com.example.andy.tutorialspoint" minSdkVersion 19 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.android.support:recyclerview-v7:28.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }>
ステップ3 −次のコードをres / layout/activity_main.xmlに追加します。
<?xml version = "1.0" encoding = "utf-8"?> <RelativeLayout xmlns:android = "https://schemas.android.com/apk/res/android" xmlns:tools = "https://schemas.android.com/tools" xmlns:app = "https://schemas.android.com/apk/res-auto" android:layout_width = "match_parent" android:layout_height = "match_parent" app:layout_behavior = "@string/appbar_scrolling_view_behavior" tools:showIn = "@layout/activity_main" tools:context = ".MainActivity"> <android.support.v7.widget.RecyclerView android:id = "@+id/recycler_view" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:scrollbars = "vertical" /> </RelativeLayout>
上記のコードでは、相対的な親レイアウトとしてウィンドウマネージャーにリサイクラービューを追加しました。
ステップ4 −次のコードをsrc / MainActivity.java
に追加しますpackage com.example.andy.tutorialspoint; import android.annotation.TargetApi; import android.os.Build; import android.os.Bundle; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private StudentAdapter studentAdapter; private List studentDataList = new ArrayList<>(); @TargetApi(Build.VERSION_CODES.O) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recycler_view); studentAdapter = new StudentAdapter(studentDataList); RecyclerView.LayoutManager manager = new GridLayoutManager(this, 2); recyclerView.setLayoutManager(manager); recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL)); recyclerView.setAdapter(studentAdapter); StudentDataPrepare(); } @RequiresApi(api = Build.VERSION_CODES.N) private void StudentDataPrepare() { studentData data = new studentData("sai", 25); studentDataList.add(data); data = new studentData("sai", 25); studentDataList.add(data); data = new studentData("raghu", 20); studentDataList.add(data); data = new studentData("raj", 28); studentDataList.add(data); data = new studentData("amar", 15); studentDataList.add(data); data = new studentData("bapu", 19); studentDataList.add(data); data = new studentData("chandra", 52); studentDataList.add(data); data = new studentData("deraj", 30); studentDataList.add(data); data = new studentData("eshanth", 28); studentDataList.add(data); Collections.sort(studentDataList, new Comparator() { @Override public int compare(studentData o1, studentData o2) { return o1.name.compareTo(o2.name); } }); } }
上記のコードでは、リサイクラービューとstudentAdapterを追加しました。その学生アダプターでは、studentDatalistをarraylistとして渡しました。学生データリストには、学生の名前と年齢が含まれています。
グリッドを取得するには、以下に示すようにグリッドレイアウトマネージャーを使用する必要があります-
RecyclerView.LayoutManager manager = new GridLayoutManager(this, 2);
上記のコードでは、レイアウトマネージャーをGridlayoutMangerとして使用し、セルを2として追加しました。したがって、各行に2つのグリッドがある結果が表示されます。
リサイクラービューアイテムを比較するために、以下に示すようにコレクションフレームワークと並べ替え方法を使用しました-
Collections.sort(studentDataList, new Comparator() { @Override public int compare(studentData o1, studentData o2) { return o1.name.compareTo(o2.name); } });
上記のコードでは、名前を使用して要素を比較しています。
ステップ5 −変更されたファイルsrc/StudentAdapter.javaの内容は次のとおりです。
package com.example.andy.tutorialspoint; import android.graphics.Color; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import java.util.List; import java.util.Random; class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.MyViewHolder> { List<studentData> studentDataList; public StudentAdapter(List<studentData> studentDataList) { this.studentDataList = studentDataList; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View itemView = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.student_list_row, viewGroup, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(MyViewHolder viewHolder, int i) { studentData data=studentDataList.get(i); Random rnd = new Random(); int currentColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); viewHolder.parent.setBackgroundColor(currentColor); viewHolder.name.setText(data.name); viewHolder.age.setText(String.valueOf(data.age)); } @Override public int getItemCount() { return studentDataList.size(); } class MyViewHolder extends RecyclerView.ViewHolder { TextView name,age; LinearLayout parent; public MyViewHolder(View itemView) { super(itemView); parent = itemView.findViewById(R.id.parent); name = itemView.findViewById(R.id.name); age = itemView.findViewById(R.id.age); } } }
アダプタクラスには、以下に示す4つのメソッドがあります-
-
onCreateViewHolder() :-ビューホルダーを作成するために使用され、ビューを返します。
-
onBindViewHolder() -作成されたビューホルダーとバインドします。
-
getItemCount() -リストのサイズが含まれています。
-
MyViewHolderクラス -RecyclerView.ViewHolder
によって拡張されるビューホルダー内部クラスです。
リサイクラービューアイテムのランダムな背景を設定するために、ランダムクラス(Androidで事前定義されたクラス)を使用してランダムな色を生成し、以下に示すようにビューアイテムの親に色を追加しました-
Random rnd = new Random(); int currentColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); viewHolder.parent.setBackgroundColor(currentColor);
ステップ6 −以下は、xml res / layout/student_list_row.xmlの変更されたコンテンツです。
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android" android:orientation = "horizontal" android:layout_width="match_parent" android:weightSum =" 1" android:layout_height="wrap_content"> <TextView android:id = "@+id/name" android:layout_width = "0dp" android:layout_weight = "0.5" android:gravity = "center" android:textSize = "15sp" android:layout_height = "100dp" /> <TextView android:id = "@+id/age" android:layout_width = "0dp" android:layout_weight = "0.5" android:gravity = "center" android:textSize = "15sp" android:layout_height = "100dp" /> </LinearLayout>
上記のリストビューでは、名前と年齢の2つのテキストビューを作成しました。
ステップ7 −変更されたファイルsrc/studentData.javaの内容は次のとおりです。
package com.example.andy.tutorialspoint; class studentData { String name; int age; public studentData(String name, int age) { this.name = name; this.age = age; } }
上記では、学生データオブジェクトについて通知します。アプリケーションを実行してみましょう。実際のAndroidモバイルデバイスをコンピューターに接続していると思います。 android studioからアプリを実行するには、プロジェクトのアクティビティファイルの1つを開き、ツールバーの[実行]アイコンをクリックします。オプションとしてモバイルデバイスを選択し、デフォルトの画面を表示するモバイルデバイスを確認します-
-
Androidのデータベースでrecyclerviewを使用するにはどうすればよいですか?
この例は、Androidのデータベースでrecyclerviewを使用する方法を示しています。 ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。 build.gradle(モジュール:app)に次の依存関係を追加します implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.android.support:cardview-v
-
AndroidでRecyclerViewを使用して無限のリストを実装するにはどうすればよいですか?
この例は、AndroidでRecyclerViewを使用してエンドレスリストを実装する方法を示しています。 ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。 ビルドgradle(モジュールアプリ)に次の依存関係を追加します- implementation 'com.android.support:cardview-v7:28.0.0' implementation 'com.android.support:recyclervie