// agrega bibliotecas en gradle
dependencias {
compilar fileTree (dir: ‘libs’, incluir: [‘* .jar’])
androidTestCompile (‘com.android.support.test.espresso: espresso-core: 2.2.2’, {
excluir grupo: ‘com.android.support’, módulo: ‘soporte-anotaciones’})
compile ‘com.android.support:appcompat-v7:24.2.1’ compile ‘com.android.support:recyclerview-v7:24.1.1’ compile ‘com.android.volley: volley: 1.0.0’ testCompile ‘junit: junit: 4.12 ‘}
importar android.app.Application;
importar android.text.TextUtils;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
importar com.android.volley.toolbox.Volley;
AppController de clase pública extiende la aplicación {
public static final String TAG = AppController.class.getSimpleName ();
RequestQueue privado mRequestQueue;
AppController estático privado mInstance;
@Override public void onCreate () {
super.onCreate ();
mInstance = this;
}
AppController público estático sincronizado getInstance () {
retorno mInstance;
}
requestQueue public getRequestQueue () {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue (getApplicationContext ());
}
return mRequestQueue;
}
public void addToRequestQueue (Request req, String tag) {
req.setTag (TextUtils.isEmpty (etiqueta)? TAG: etiqueta);
getRequestQueue (). add (req);
}
public void addToRequestQueue (Request req) {
req.setTag (TAG);
getRequestQueue (). add (req);
}
public void cancelPendingRequests (etiqueta de objeto) {
if (mRequestQueue! = null) {
mRequestQueue.cancelAll (etiqueta);
}
}
}
// contactmodel
ContactModel clase pública {
ID de cadena;
Nombre de cadena, correo electrónico, dirección, género;
public String getMobile () {
volver móvil;
}
public void setMobile (String mobile) {
this.mobile = mobile;
}
public String getHome () {
volver a casa;
}
public void setHome (String home) {
this.home = inicio;
}
public String getOffice () {
oficina de retorno;
}
public void setOffice (oficina de cadenas) {
this.office = office;
}
Cadena móvil, hogar, oficina;
public String getId () {
ID de retorno;
}
public void setId (ID de cadena) {
this.id = id;
}
public String getName () {
nombre de retorno;
}
public void setName (nombre de cadena) {
this.name = nombre;
}
public String getEmail () {
devolver correo electrónico;
}
public void setEmail (correo electrónico de cadena) {
this.email = correo electrónico;
}
public String getAddress () {
dirección del remitente;
}
public void setAddress (dirección de cadena) {
this.address = dirección;
}
public String getGender () {
devolver el género;
}
public void setGender (género de cadena) {
this.gender = género;
}
}
// contactsadapter
importar android.content.Context;
importar android.support.v7.widget.RecyclerView;
importar android.view.LayoutInflater;
importar android.view.View;
importar android.view.ViewGroup;
importar android.widget.TextView;
import java.util.List;
/ ** * Creado por A2sa el 16/03/2017. * / public class ContactsAdatper extiende RecyclerView.Adapter {
Lista contactModelList;
Contexto de contexto;
public ContactsAdatper (contexto contextual, List contactModelList) {
this.context = contexto;
this.contactModelList = contactModelList;
}
La clase estática pública ViewHolder extiende RecyclerView.ViewHolder {
Nombre de TextView;
Correo electrónico TextView;
TextView mobile;
public ViewHolder (Ver itemView) {
super (itemView);
nombre = (TextView) itemView.findViewById (R.id.name);
email = (TextView) itemView.findViewById (R.id.email);
mobile = (TextView) itemView.findViewById (R.id.mobile);
}
}
@Override public ContactsAdatper.ViewHolder onCreateViewHolder (ViewGroup parent, int viewType) {
Ver v = LayoutInflater.from (parent.getContext ()). Inflate (R.layout.list_cell, parent, false);
ContactsAdatper.ViewHolder cv = new ContactsAdatper.ViewHolder (v);
volver cv;
}
@Override public void onBindViewHolder (final ContactsAdatper.ViewHolder titular, posición int final) {
ContactModel contactModel = contactModelList.get (posición);
holder.mobile.setText (contactModel.getMobile ());
holder.email.setText (contactModel.getEmail ());
holder.name.setText (contactModel.getName ());
}
@Override public int getItemCount () {
return contactModelList.size ();
}
}
//Actividad principal
clase pública MainActivity extiende AppCompatActivity {
Lista de RecyclerView;
List contactModelList = new ArrayList <> ();
@Override protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
lista = (RecyclerView) findViewById (R.id.list);
Apicall ();
}
apicall público vacío () {
String url = ” http://api.androidhive.info/contacts/" ;;
Constructor Uri.Builder = Uri.parse (url) .buildUpon ();
Cadena apiurl = builder.build (). ToString ();
StringRequest strRequest = new StringRequest (Request.Method.GET, apiurl,
nueva Response.Listener () {
@Override public void onResponse (respuesta de cadena) {
tratar {
JSONObject jsonObject = nuevo JSONObject (respuesta);
Contactos de JSONArray = jsonObject.getJSONArray (“contactos”);
for (int i = 0; i JSONObject c = contactos.getJSONObject (i);
ContactModel contactModel = nuevo ContactModel ();
contactModel.setId (c.getString (“id”));
contactModel.setName (c.getString (“nombre”));
contactModel.setEmail (c.getString (“correo electrónico”));
contactModel.setAddress (c.getString (“dirección”));
contactModel.setGender (c.getString (“género”));
JSONObject c1 = c.getJSONObject (“teléfono”);
contactModel.setHome (c1.getString (“inicio”));
contactModel.setMobile (c1.getString (“mobile”));
contactModel.setOffice (c1.getString (“oficina”));
contactModelList.add (contactModel);
LinearLayoutManager layoutManager = new LinearLayoutManager (getApplicationContext ());
list.setLayoutManager (layoutManager);
ContactsAdatper ContactsAdatper = new ContactsAdatper (MainActivity.this, contactModelList)
list.setAdapter (contactosAdatper);
}
} catch (JSONException e) {
e.printStackTrace ();
}
}
}, nueva Response.ErrorListener () {
@Override public void onErrorResponse (VolleyError volleyError) {
Toast.makeText (MainActivity.this, “Vuelva a intentarlo”, Toast.LENGTH_SHORT) .show ();
}
});
//AppController.getInstance (). GetRequestQueue (). GetCache (). Clear (); AppController.getInstance (). AddToRequestQueue (strRequest);
}
}
http://schemas.android.com/apk/res/android" ; android: layout_width =” match_parent “android: layout_height = “match_parent” android: orientación = “vertical”>
// POST
privado vacío addToFavourite () {
cadena final userId = sharedPreferences.getString (“userId”, “”);
final String key = sharedPreferences.getString (“key”, “”);
String url = Common.AD;
StringRequest strRequest = new StringRequest (Request.Method.POST, url,
nueva Response.Listener () {
@Override public void onResponse (respuesta de cadena) {
tratar {
JSONObject jsonObject = nuevo JSONObject (respuesta);
if (jsonObject.getString (“status”). equals (“1”)) {
holder.favouriteToggleButton.setVisibility (View.VISIBLE);
Toast.makeText (contexto, “Agregado a favoritos”, Toast.LENGTH_SHORT) .show ();
} más {
holder.favouriteToggleButton.setVisibility (View.VISIBLE);
}
} catch (JSONException e) {
e.printStackTrace ();
}
}
}, nueva Response.ErrorListener () {
@Override public void onErrorResponse (error VolleyError) {
holder.favouriteLoading.setVisibility (View.GONE);
Toast.makeText (contexto, “Vuelva a intentarlo”, Toast.LENGTH_SHORT) .show ();
}
}) {
@Override Mapa protegido getParams () {
Map params = new HashMap ();
params.put (“user_id”, userId);
params.put (“clave”, clave);
params.put (“switch_id”, switchModelList.get (position) .getSwitchId ());
parámetros de retorno;
}
};
AppController.getInstance (). AddToRequestQueue (strRequest);
}