برنامج تعليمي لتحليل JSON مع مثال في Android Studio [خطوة بخطوة]
يرمز JSON إلى JavaScript Object Notation. إنه منظم وخفيف الوزن وقابل للقراءة ويسهل تحليله. إنه أفضل بديل لـ XML عندما يحتاج تطبيق Android الخاص بنا إلى تبادل البيانات من الخادم. تحليل XML معقد جدًا مقارنة بتحليل JSON .
JSON هي طريقة أقصر وأسرع وأسهل لتبادل البيانات من الخادم. حقق JSON نجاحًا كبيرًا ومعظم واجهة برمجة التطبيقات المتاحة تدعم تنسيق JSON.
يوفر Android لنا أربع فئات مختلفة لمعالجة بيانات JSON. هذه الفئات هي JSONObject و JSONArray و JSONStringer و JSONTokenizer.
جدول المحتويات
نموذج تنسيق JSON
يوجد أدناه نموذج رمز JSON. إنه رمز JSON البسيط للغاية الذي يعطينا قائمة بالمستخدمين حيث يحتوي كل كائن على معلومات مثل معرف المستخدم والاسم والبريد الإلكتروني والجنس وأرقام الاتصال المختلفة.
{
"users": [
{
"id": "1087",
"name": "Abhishek Saini",
"email": "info@abhiandroid.com",
"gender" : "male",
"contact": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
{
"id": "1088",
"name": "Gourav",
"email": "gourav9188@gmail.com",
"gender" : "male",
"contact": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
.
.
.
.
]
}
عناصر JSON في Android
في Android ، يتكون JSON من العديد من المكونات. أدناه نحدد بعض المكونات المشتركة.
1. Array ([): في JSON ، القوس المربع ([) يمثل JSONArray. قد تكون قيم JSONArray أي مزيج من JSONObjects أو صفائف JSON أخرى أو سلاسل أو قيم منطقية أو صحيحة أو طويلة أو مزدوجة أو فارغة أو فارغة. قد لا تكون القيم NaNs أو ما لا نهاية أو من أي نوع غير مدرج هنا.
2. Objects ({): في JSON ، يمثل القوس المتعرج ({) كائن JSONObject. يمثل JSONObject البيانات في شكل زوج مفتاح وقيمة. قد تكون قيم JSONObject أي مزيج من عناصر JSONObjects أو JSON arrays أو سلاسل أو قيم منطقية أو صحيحة أو طويلة أو مزدوجة أو فارغة أو فارغة. قد لا تكون القيم NaNs أو ما لا نهاية أو من أي نوع غير مدرج هنا.
3. key : يحتوي JSONObject على مفتاح في تنسيق سلسلة. يقوم زوج من المفاتيح والقيمة بإنشاء JSONObject.
4. Value : يحتوي كل مفتاح على قيمة يمكن أن تكون نوع بيانات بدائي (عدد صحيح ، عدد عشري ، سلسلة ، إلخ).
تحليل JSON في Android
عادةً ما تحتوي JSON على نوعين من العقد JSONArray و JSONObject ، لذلك أثناء التحليل ، يتعين علينا استخدام الطريقة المناسبة. إذا كانت JSON تبدأ من قوس مربع ([) ، فإننا نستخدم طريقة getJSONArray () وإذا كانت تبدأ من قوس متعرج ({) ، فعلينا استخدام طريقة getJSONObject (). بصرف النظر عن هذه ، هناك بعض الطرق الأخرى لتحليل بيانات JSON بشكل أفضل.
طرق تحليل JSONObjet
نحدد أدناه بعض الطرق المهمة لتحليل JSONObject والتي تستخدم بشكل أساسي لتحليل البيانات من JSONObject.
1. get (String name): تُستخدم هذه الطريقة للحصول على القيمة من JSONObject. تقوم بإرجاع قيمة نوع الكائن. نقوم بتمرير مفتاح نوع السلسلة ويعيد قيمة نوع الكائن إذا كان موجودًا وإلا فإنه يرمي JSONException.
2. getBoolean (String name ): تُستخدم هذه الطريقة للحصول على القيمة المنطقية من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد قيمة النوع المنطقي إذا كان موجودًا وإلا فإنه يرمي JSONException.
3. getDouble ( String name): تُستخدم هذه الطريقة للحصول على قيمة النوع المزدوج من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد القيمة في نوع مزدوج إذا كان موجودًا وإلا فإنه يرمي JSONException.
4. getInt ( String name): تُستخدم هذه الطريقة للحصول على قيمة نوع int من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد القيمة في نوع int إذا كان موجودًا وإلا فإنه يرمي JSONException.
5. getJSONArray (String name ): تُستخدم هذه الطريقة للحصول على قيمة نوع JSONArray. نقوم بتمرير مفتاح نوع السلسلة ويعيد JSONArray إذا كان موجودًا وإلا فإنه يرمي JSONException.
6. getJSONObject (String name ): تُستخدم هذه الطريقة للحصول على قيمة نوع JSONObject. نقوم بتمرير مفتاح نوع String ويعيد قيمة JSONObject إذا كانت موجودة وإلا فإنه يرمي JSONException.
7. getLong (String name ): تُستخدم هذه الطريقة للحصول على قيمة النوع الطويل من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد القيمة في النوع الطويل إذا كان موجودًا وإلا فإنه يرمي JSONException.
8. getString (String name ): تُستخدم هذه الطريقة للحصول على قيمة نوع السلسلة من JSONObject. نقوم بتمرير مفتاح نوع String ويعيد القيمة في نوع String إذا كان موجودًا وإلا فإنه يرمي JSONException.
9. length (): تُستخدم هذه الطريقة للحصول على عدد تعيينات الاسم / القيمة في هذا الكائن.
10. keys (): تستخدم هذه الطريقة للحصول على مكرر أسماء السلسلة في الكائن.
11. opt (String name): تُستخدم هذه الطريقة للحصول على القيمة من JSONObject. تقوم بإرجاع قيمة نوع الكائن. نقوم بتمرير مفتاح نوع السلسلة ويعيد قيمة نوع الكائن إذا كان موجودًا وإلا فإنه يُرجع فارغًا.
12. optBoolean (String name ): تُستخدم هذه الطريقة للحصول على القيمة المنطقية من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد قيمة النوع المنطقي إذا كان موجودًا وإلا فإنه يقوم بإرجاع القيمة false.
13. optDouble (String name): تُستخدم هذه الطريقة للحصول على قيمة النوع المزدوج من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد القيمة في نوع مزدوج إذا كان موجودًا وإلا فإنه يقوم بإرجاع NaN.
14. optInt (String name ): تُستخدم هذه الطريقة للحصول على قيمة نوع int من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد القيمة في نوع int إذا كان موجودًا وإلا فإنه يقوم بإرجاع القيمة 0.
15. optJSONArray (String name ): تُستخدم هذه الطريقة للحصول على قيمة نوع JSONArray من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد JSONArray إذا كان موجودًا وإلا فإنه يُرجع فارغًا.
16. optJSONObject (String name ): تُستخدم هذه الطريقة للحصول على قيمة نوع JSONObject الأخرى من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد قيمة JSONObject إذا كان موجودًا وإلا فإنه يُرجع قيمة خالية.
17. optLong (String name ): تُستخدم هذه الطريقة للحصول على قيمة النوع الطويل من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد القيمة في النوع الطويل إذا كان موجودًا وإلا فإنه يقوم بإرجاع القيمة 0.
18. optString (String name): تُستخدم هذه الطريقة للحصول على قيمة نوع String من JSONObject. نقوم بتمرير مفتاح نوع السلسلة ويعيد القيمة في نوع السلسلة إذا كان موجودًا وإلا فإنه يقوم بإرجاع السلسلة فارغة ("").
طرق تحليل JSONArray
نحدد أدناه بعض الطرق المهمة لتحليل JSONArray والتي تستخدم بشكل أساسي لتحليل البيانات من JSONArray.
1. get (int index): تستخدم هذه الطريقة للحصول على القيمة من JSONArray. تقوم بإرجاع قيمة نوع الكائن. نقوم بتمرير الفهرس وإرجاع قيمة نوع الكائن إذا كان موجودًا وإلا فإنه يرمي JSONException.
2. getBoolean ( int index): تُستخدم هذه الطريقة للحصول على القيمة المنطقية من JSONArray. نقوم بتمرير الفهرس وإرجاع قيمة النوع المنطقي إذا كان موجودًا وإلا فإنه يرمي JSONException.
3. getDouble (int index ): تُستخدم هذه الطريقة للحصول على قيمة النوع المزدوج من JSONArray. نقوم بتمرير الفهرس ويعيد القيمة في نوع مزدوج إذا كان موجودًا وإلا فإنه يرمي JSONException.
4. getInt ( int index): تُستخدم هذه الطريقة للحصول على قيمة نوع int من JSONArray. نقوم بتمرير الفهرس ويعيد القيمة في نوع int إذا كان موجودًا وإلا فإنه يرمي JSONException.
5. getJSONArray (int index ): تُستخدم هذه الطريقة للحصول على قيمة نوع JSONArray. نقوم بتمرير الفهرس وإرجاع JSONArray إذا كان موجودًا وإلا فإنه يرمي JSONException.
6. getJSONObject (int index ): تُستخدم هذه الطريقة للحصول على قيمة نوع JSONObject. نقوم بتمرير الفهرس وإرجاع قيمة JSONObject إذا كانت موجودة وإلا فإنها ترمي JSONException.
7. getLong ( int index): تُستخدم هذه الطريقة للحصول على قيمة النوع الطويل من JSONArray. نقوم بتمرير الفهرس وإرجاع القيمة في نوع طويل إذا كان موجودًا وإلا فإنه يرمي JSONException.
8. getString (int index ): تستخدم هذه الطريقة للحصول على قيمة نوع السلسلة من JSONArray. نقوم بتمرير الفهرس وإرجاع القيمة في نوع String إذا كان موجودًا وإلا فإنه يرمي JSONException.
9. length (): تستخدم هذه الطريقة للحصول على عدد القيم في هذه المصفوفة.
10. opt (int index): تُستخدم هذه الطريقة للحصول على القيمة من JSONArray. تقوم بإرجاع قيمة نوع الكائن. نقوم بتمرير الفهرس وإرجاع القيمة في فهرس نوع الكائن إذا كان موجودًا وإلا فإنه يُرجع القيمة فارغة.
11. optBoolean (int index ): تُستخدم هذه الطريقة للحصول على القيمة المنطقية من JSONArray. نقوم بتمرير الفهرس وإرجاع قيمة النوع المنطقي إذا كان موجودًا وإلا فإنه يُرجع القيمة false.
12. optDouble (int index ): تُستخدم هذه الطريقة للحصول على قيمة النوع المزدوج من JSONArray. نقوم بتمرير الفهرس ويعيد القيمة في نوع مزدوج إذا كان موجودًا وإلا فإنه يُرجع NaN.
13. optInt (int index ): تُستخدم هذه الطريقة للحصول على قيمة نوع int من JSONArray. نقوم بتمرير الفهرس ويعيد القيمة في نوع int إذا كان موجودًا وإلا فإنه يُرجع 0.
14. optJSONArray ( int index): تُستخدم هذه الطريقة للحصول على قيمة نوع JSONArray الأخرى من JSONArray. نقوم بتمرير الفهرس وإرجاع JSONArray إذا كان موجودًا وإلا فإنه يُرجع فارغًا.
15. optJSONObject (int index ): تُستخدم هذه الطريقة للحصول على قيمة نوع JSONObject من JSONArray. نقوم بتمرير الفهرس وإرجاع قيمة JSONObject إذا كانت موجودة ، وإلا فإنها ترجع قيمة خالية.
16. optLong (int index ): تُستخدم هذه الطريقة للحصول على قيمة النوع الطويل من JSONArray. نمرر الفهرس ويعيد القيمة في نوع طويل إذا كان موجودًا وإلا فإنه يُرجع 0.
17. optString ( int index): تُستخدم هذه الطريقة للحصول على قيمة نوع String من JSONArray. نقوم بتمرير الفهرس وإرجاع القيمة في نوع String إذا كان موجودًا وإلا فإنه يُرجع سلسلة فارغة ("").
مثال 1 لتحليل JSON البسيط في Android Studio
فيما يلي مثال لتحليل JSON في Android ، في هذا المثال نقوم بتحليل البيانات من JSON ثم نعرضها في واجهة المستخدم. في هذا ، لدينا اسم الموظف والراتب مخزنين بتنسيق JSON. أولاً ، نقوم بإنشاء ملفين TextView في ملف XML الخاص بنا ، ثم في نشاطنا نقوم بتحليل البيانات باستخدام أساليب JSONObject وتعيينها في TextView .
يمكنك أدناه تنزيل الكود ، والاطلاع على الإخراج النهائي والشرح خطوة بخطوة للمثال:

الخطوة 1: قم بإنشاء مشروع جديد وقم بتسميته JSONParsingExample.
الخطوة 2: افتح res -> layout -> activity_main.xml (أو) main.xml وأضف الكود التالي:
في هذه الخطوة ، نقوم بإنشاء ملفي TextView لعرض اسم الموظف والراتب.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="abhiandroid.com.jsonparsingexample.MainActivity"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="50dp" android:text="Name" android:textColor="#000" android:textSize="20sp" /> <TextView android:id="@+id/salary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="80dp" android:text="Salary" android:textColor="#000" android:textSize="20sp" /> </RelativeLayout>
الخطوة 3: الآن افتح التطبيق -> java -> package -> MainActivity. جافا وإضافة الكود أدناه.
في هذه الخطوة ، نحصل أولاً على مرجع كل من TextView ثم نقوم بتحليل JSON باستخدام طرق JSONObject وأخيراً قمنا بتعيين البيانات في Textview's.
package abhiandroid.com.jsonparsingexample;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
String JSON_STRING = "{\"employee\":{\"name\":\"Abhishek Saini\",\"salary\":65000}}";
String name, salary;
TextView employeeName, employeeSalary;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// get the reference of TextView's
employeeName = (TextView) findViewById(R.id.name);
employeeSalary = (TextView) findViewById(R.id.salary);
try {
// get JSONObject from JSON file
JSONObject obj = new JSONObject(JSON_STRING);
// fetch JSONObject named employee
JSONObject employee = obj.getJSONObject("employee");
// get employee name and salary
name = employee.getString("name");
salary = employee.getString("salary");
// set employee name and salary in TextView's
employeeName.setText("Name: "+name);
employeeSalary.setText("Salary: "+salary);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
تحليل ملف JSON مثال 2 في Android Studio
يوجد أدناه المثال الثاني لتحليل JSON في Android Studio . في هذا المثال ، نقوم بإنشاء ملف JSON وتخزينه في مجلد أصول Android. في ملف JSON هذا ، لدينا قائمة بالمستخدمين حيث يحتوي كل كائن على معلومات مثل معرف المستخدم والاسم والبريد الإلكتروني والجنس وأرقام الاتصال المختلفة. في هذا نحن نستخدم LinearLayoutManager مع الاتجاه الرأسي لعرض عناصر المصفوفة. أولاً ، نعلن عن RecyclerView في ملف XML الخاص بنا ثم نحصل على مرجع له في نشاطنا. بعد ذلك نحضر ملف JSON ثم نحلل بيانات JSONArray ونقوم في النهاية بتعيين المحول لإظهار العناصر في RecyclerView . عندما ينقر المستخدم على عنصر ما ، يتم عرض اسم الشخص على الشاشة بمساعدة Toast .

الخطوة 1: قم بإنشاء مشروع جديد وقم بتسميته JSONParsingExample.
الخطوة 2: توسيع Gradle > build.gradle وإضافة مكتبة RecyclerView و CardView مكتبة الاعتماد في ذلك.
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "abhiandroid.com.jsonparsingexample"
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.1.1'
compile "com.android.support:recyclerview-v7:23.0.1" // dependency file for RecyclerView
compile 'com.android.support:cardview-v7:23.0.1' // dependency file for CardView
}
الخطوة 3: افتح res -> layout -> activity_main.xml (أو) main.xml وأضف الكود التالي:
في هذه الخطوة ، نقوم بإنشاء RecyclerView في ملف XML الخاص بنا.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="abhiandroid.com.jsonparsingexample.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
الخطوة 4: قم بإنشاء ملف XML جديد rowlayout.xml لعنصر RecyclerView والصق الكود التالي فيه.
في هذه الخطوة ، نقوم بإنشاء ملف xml جديد لصف العناصر حيث نقوم بإنشاء TextView لإظهار البيانات.
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/card_view" android:layout_width="match_parent" android:layout_margin="5dp" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="10dp"> <!-- items for a single row of RecyclerView --> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Name" android:textColor="#000" android:textSize="20sp" /> <TextView android:id="@+id/email" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="email@email.com" android:textColor="#000" android:textSize="15sp" /> <TextView android:id="@+id/mobileNo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="e9999999999" android:textColor="#000" android:textSize="15sp" /> </LinearLayout> </android.support.v7.widget.CardView>
الخطوة 5: الآن افتح التطبيق -> جافا -> الحزمة -> MainActivity.java وأضف الكود أدناه.
في هذه الخطوة أولاً نحصل على مرجع RecyclerView. بعد ذلك ، نحضر ملف JSON من الأصول ونحلل بيانات JSON باستخدام أساليب JSONArray و JSONObject ثم نضبط LayoutManager وأخيرًا قمنا بتعيين المحول لإظهار العناصر في RecyclerView.
package abhiandroid.com.jsonparsingexample;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
// ArrayList for person names, email Id's and mobile numbers
ArrayList<String> personNames = new ArrayList<>();
ArrayList<String> emailIds = new ArrayList<>();
ArrayList<String> mobileNumbers = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// get the reference of RecyclerView
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
// set a LinearLayoutManager with default vertical orientation
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(linearLayoutManager);
try {
// get JSONObject from JSON file
JSONObject obj = new JSONObject(loadJSONFromAsset());
// fetch JSONArray named users
JSONArray userArray = obj.getJSONArray("users");
// implement for loop for getting users list data
for (int i = 0; i < userArray.length(); i++) {
// create a JSONObject for fetching single user data
JSONObject userDetail = userArray.getJSONObject(i);
// fetch email and name and store it in arraylist
personNames.add(userDetail.getString("name"));
emailIds.add(userDetail.getString("email"));
// create a object for getting contact data from JSONObject
JSONObject contact = userDetail.getJSONObject("contact");
// fetch mobile number and store it in arraylist
mobileNumbers.add(contact.getString("mobile"));
}
} catch (JSONException e) {
e.printStackTrace();
}
// call the constructor of CustomAdapter to send the reference and data to Adapter
CustomAdapter customAdapter = new CustomAdapter(MainActivity.this, personNames, emailIds, mobileNumbers);
recyclerView.setAdapter(customAdapter); // set the Adapter to RecyclerView
}
public String loadJSONFromAsset() {
String json = null;
try {
InputStream is = getAssets().open("users_list.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
}
الخطوة 6: إنشاء فئة جديدة CustomAdapter.java داخل الحزمة وإضافة التعليمات البرمجية التالية.
في هذه الخطوة ، نقوم بإنشاء فئة CustomAdapter وتوسيع RecyclerView. فئة المحول Adapter مع ViewHolder بداخله. بعد ذلك نقوم بتنفيذ الطرق التي تم تجاوزها وإنشاء مُنشئ للحصول على البيانات من النشاط ، في هذا المحول المخصص طريقتان أكثر أهمية أولاً هما onCreateViewHolder حيث نقوم بتضخيم عنصر التخطيط xml وتمريره إلى View Holder والآخر onBindViewHolder فيه نقوم بتعيين البيانات في طريقة العرض بمساعدة ViewHolder.
package abhiandroid.com.jsonparsingexample;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
ArrayList<String> personNames;
ArrayList<String> emailIds;
ArrayList<String> mobileNumbers;
Context context;
public CustomAdapter(Context context, ArrayList<String> personNames, ArrayList<String> emailIds, ArrayList<String> mobileNumbers) {
this.context = context;
this.personNames = personNames;
this.emailIds = emailIds;
this.mobileNumbers = mobileNumbers;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// infalte the item Layout
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rowlayout, parent, false);
MyViewHolder vh = new MyViewHolder(v); // pass the view to View Holder
return vh;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
// set the data in items
holder.name.setText(personNames.get(position));
holder.email.setText(emailIds.get(position));
holder.mobileNo.setText(mobileNumbers.get(position));
// implement setOnClickListener event on item view.
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// display a toast with person name on item click
Toast.makeText(context, personNames.get(position), Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return personNames.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView name, email, mobileNo;// init the item view's
public MyViewHolder(View itemView) {
super(itemView);
// get the reference of item view's
name = (TextView) itemView.findViewById(R.id.name);
email = (TextView) itemView.findViewById(R.id.email);
mobileNo = (TextView) itemView.findViewById(R.id.mobileNo);
}
}
}