Comment charger des données(json) en recycleur de vue à l'aide de volley
J'ai mis en œuvre recyclerview dans mon application et j'ai besoin maintenant d'extraire des données à partir du serveur et je viens de connaître à propos de volley-être le meilleur moyen de récupérer les données. J'ai cherché en ligne, mais je suis incapable de trouver un bon tutoriel pour le même.
C'est comment j'ai initialisé le recyclerview dans mon code.(qui a codé en dur ensemble de données)
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(linearLayoutManager);
mAdapter = new CardAdapter();
mRecyclerView.setAdapter(mAdapter);
voici le code d'adaptateur.
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
ArrayList<BusRouteNameDetails> mItems;
public int TAG=0;
public CardAdapter() {
super();
mItems = new ArrayList<>();
BusRouteNameDetails routename = new BusRouteNameDetails();
routename.setName("xyz");
routename.setNumber("X4");
mItems.add(routename);
routename = new BusRouteNameDetails();
routename.setName("xyz");
routename.setNumber("X4");
mItems.add(routename);
routename = new BusRouteNameDetails();
routename.setName("xyz");
routename.setNumber("X4");
mItems.add(routename);
routename = new BusRouteNameDetails();
routename.setName("xyz");
routename.setNumber("X4");
mItems.add(routename);
routename = new BusRouteNameDetails();
routename.setName("xyz");
routename.setNumber("X4");
mItems.add(routename);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.busroutename_list, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
BusRouteNameDetails routename = mItems.get(i);
viewHolder.tvName.setText(routename.getName());
viewHolder.tvRoutename.setText(routename.getNumber());
Log.e("TAG","i value="+ i);
if(i==mItems.size()-1)
viewHolder.seperator.setVisibility(View.INVISIBLE);
}
@Override
public int getItemCount() {
Log.e("TAG","item size"+ mItems.size());
return mItems.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
public TextView tvName;
public TextView tvRoutename;
public View seperator;
public ViewHolder(View itemView) {
super(itemView);
tvName = (TextView)itemView.findViewById(R.id.RouteName1);
tvRoutename = (TextView)itemView.findViewById(R.id.Route_src_dest);
seperator=(View)itemView.findViewById(R.id.seperator);
}
}
}
Et voici les getters et les setters
public class BusRouteNameDetails {
private String mName;
private String mNumber;
public String getName() {
return mName;
}
public void setName(String name) {
this.mName = name;
}
public String getNumber() {
return mNumber;
}
public void setNumber(String Number) {
this.mNumber = Number;
}
}
OriginalL'auteur Devs | 2015-09-10
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ma solution suivante:
Supposons la réponse du serveur comme le JSON suivants:
Dans votre projet Android:
Puis dans votre Activité:
Voici le résultat
Espérons que cette aide!
Comme dans le besoin d'envoyer des valeurs pour le serveur. Le code fonctionne très bien. merci beaucoup,
Pouvez-vous l'envoyer avec passage de paramètres?
Pouvez-vous préciser? Dans mon code, simple logique est: juste besoin de faire une requête GET, puis obtenir la reponse et mettre à jour les données recycleView
bien sûr, vous n'avez pas à appeler
personList.clear();
. Cette méthode uniquement pour vous assurer que les données en double à chaque fois qu'une requête exécutéeOriginalL'auteur BNK