How to retrieve + fill Php URL JSON parsing multiple records one by one into CardView inside RecyclerView.
RecyclerView is the upgraded version of ListView with multiple more extended features and it can also be created by dynamic data. Here dynamic data means the data( All the records ) directly coming from online server with the use of PHP scripting code that is also coming from MySQL database. So here is the complete step by step tutorial for Android Create RecyclerView using JSON parsing online server data example tutorial.
Note : Project download folder contain all the source code with whole android project and all the php scripting files with MySQL database included.
List of All the Java programming files inside this project :
- MainActivity.java .
- GetDataAdapter.java .
- RecyclerViewAdapter.java .
List of all layout files inside this project :
- activity_main.xml .
- recyclerview_items.xml .
List of All PHP scripting files, which help us to convert MySQL database data into JSON format.
- jsonData.php .
- dbconfig.php .
Note: Read below steps very carefully to add Volley,RecyclerView and CardView library inside your current project.
1. Open your project’s build.gradle ( Module : app ) file.
2. Please add below code inside your build.gradle ( Module : app ) file.
compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:cardview-v7:23.0.+' compile 'com.android.support:recyclerview-v7:23.0.+' compile 'com.mcxiaoke.volley:library:1.0.19'
3. Screenshot of build.gradle ( Module : app ) file after adding above code.
Next step is to add Internet permission inside AndroidManifest.xml file.
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Here your go friends, Now start coding .
Android Create RecyclerView using JSON parsing online server data example tutorial.
Code for MainActivity.java file.
package com.android_examples.dynamicrecyclerviewjson_android_examplescom; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonArrayRequest; import com.android.volley.toolbox.Volley; public class MainActivity extends AppCompatActivity { List<GetDataAdapter> GetDataAdapter1; RecyclerView recyclerView; RecyclerView.LayoutManager recyclerViewlayoutManager; RecyclerView.Adapter recyclerViewadapter; ProgressBar progressBar; String GET_JSON_DATA_HTTP_URL = "http://androidblog.esy.es/jsonData.php"; String JSON_ID = "id"; String JSON_NAME = "name"; String JSON_SUBJECT = "subject"; String JSON_PHONE_NUMBER = "phone_number"; Button button; JsonArrayRequest jsonArrayRequest ; RequestQueue requestQueue ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GetDataAdapter1 = new ArrayList<>(); recyclerView = (RecyclerView) findViewById(R.id.recyclerView1); progressBar = (ProgressBar) findViewById(R.id.progressBar1); button = (Button)findViewById(R.id.button) ; recyclerView.setHasFixedSize(true); recyclerViewlayoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(recyclerViewlayoutManager); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { progressBar.setVisibility(View.VISIBLE); JSON_DATA_WEB_CALL(); } }); } public void JSON_DATA_WEB_CALL(){ jsonArrayRequest = new JsonArrayRequest(GET_JSON_DATA_HTTP_URL, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { progressBar.setVisibility(View.GONE); JSON_PARSE_DATA_AFTER_WEBCALL(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); requestQueue = Volley.newRequestQueue(this); requestQueue.add(jsonArrayRequest); } public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){ for(int i = 0; i<array.length(); i++) { GetDataAdapter GetDataAdapter2 = new GetDataAdapter(); JSONObject json = null; try { json = array.getJSONObject(i); GetDataAdapter2.setId(json.getInt(JSON_ID)); GetDataAdapter2.setName(json.getString(JSON_NAME)); GetDataAdapter2.setSubject(json.getString(JSON_SUBJECT)); GetDataAdapter2.setPhone_number(json.getString(JSON_PHONE_NUMBER)); } catch (JSONException e) { e.printStackTrace(); } GetDataAdapter1.add(GetDataAdapter2); } recyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1, this); recyclerView.setAdapter(recyclerViewadapter); } }
Code for GetDataAdapter.java file.
package com.android_examples.dynamicrecyclerviewjson_android_examplescom; import java.util.ArrayList; /** * Created by JUNED on 6/16/2016. */ public class GetDataAdapter { int Id; String name; String phone_number; String subject; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return Id; } public void setId(int Id1) { this.Id = Id1; } public String getPhone_number() { return phone_number; } public void setPhone_number(String phone_number1) { this.phone_number = phone_number1; } public String getSubject() { return subject; } public void setSubject(String subject1) { this.subject = subject1; } }
Code for RecyclerViewAdapter.java file.
package com.android_examples.dynamicrecyclerviewjson_android_examplescom; 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 java.util.List; /** * Created by JUNED on 6/16/2016. */ public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> { Context context; List<GetDataAdapter> getDataAdapter; public RecyclerViewAdapter(List<GetDataAdapter> getDataAdapter, Context context){ super(); this.getDataAdapter = getDataAdapter; this.context = context; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_items, parent, false); ViewHolder viewHolder = new ViewHolder(v); return viewHolder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { GetDataAdapter getDataAdapter1 = getDataAdapter.get(position); holder.NameTextView.setText(getDataAdapter1.getName()); holder.IdTextView.setText(String.valueOf(getDataAdapter1.getId())); holder.PhoneNumberTextView.setText(getDataAdapter1.getPhone_number()); holder.SubjectTextView.setText(getDataAdapter1.getSubject()); } @Override public int getItemCount() { return getDataAdapter.size(); } class ViewHolder extends RecyclerView.ViewHolder{ public TextView IdTextView; public TextView NameTextView; public TextView PhoneNumberTextView; public TextView SubjectTextView; public ViewHolder(View itemView) { super(itemView); IdTextView = (TextView) itemView.findViewById(R.id.textView2) ; NameTextView = (TextView) itemView.findViewById(R.id.textView4) ; PhoneNumberTextView = (TextView) itemView.findViewById(R.id.textView6) ; SubjectTextView = (TextView) itemView.findViewById(R.id.textView8) ; } } }
Code for activity_main.xml layout file.
<?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="com.android_examples.dynamicrecyclerviewjson_android_examplescom.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/button"> </android.support.v7.widget.RecyclerView> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:visibility="gone"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Click Here to load JSON data into RecyclerView" android:id="@+id/button" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" /> </RelativeLayout>
Code for recyclerview_items.xml layout file.