私は自分のアプリケーションでrecyclerviewを実装しましたが、今ではAPIからデータを取得する必要がありますが、これを行う方法の良い例は見つかりません。私がAPIからデータを取得しようとするのは初めてです。本当にそれを行う方法はわかりません。JSONからrecyclerviewを読み込みます
APIは、このようにデータを提供します
ここ{
status: "OK"
code: 0
message: ""
results: [
{
id: 0
slug: "data"
slug_franquicia: "data"
slug_categoria: "data"
}}
uは、私は静的データを表示するために、現時点で6つのフィールドを持つコンストラクタを使用しています(私が使用するコンストラクタを私のコンストラクタを見ることができます)のデータを解析するために大きなものである:
ここ私は、静的な情報でリストを埋める:
public class Empresas2 {
private static Empresas[] empresas={
new Empresas(R.drawable.activatuocio, "Activa tu ocio y di capacitados","Asociación sin ánimo de lucro que llena con ocio y talleres de formación en distintos ámbitos el tiempo de las personas con discapacidad intelectual. Confianza en si mismas, autonomía e integración.","Social", "El Ejido", true),
new Empresas(R.drawable.agroservicios, "Agroservicios Manuel Garzón","Todo tipo de trabajos de tractor con la mejor máquina, los aperos más completos y la mayor maestría en la conducción y profesionalidad para que el rendimiento de los cultivos vaya a mucho más.","Agricultura", "El Ejido", true),
new Empresas(R.drawable.alexgarcia, "Alex García", "Alex García: Cantautor Almeriense. Disfruta de su nuevo disco titulado ''Por amor al arte, hasta que se harten.''","Artistas", "El Ejido", true),
new Empresas(R.drawable.allianz, "Allianz Seguros Jorge Berenguer","Trato personalizado en la gestión de dos grandes marcas como Allianz y sus seguros de particulares y empresas para autónomos, pymes y grandes firmas, y Solunion y sus seguros de crédito y recobro.", "Legal", "El Ejido", false),
new Empresas(R.drawable.alteco, "Alteco", "Alteco Electricidad y Electrónica", "Profesionales", "El Ejido", true),
new Empresas(R.drawable.aluminiosmanuel, "Aluminios Manuel Estévez", "Grandes profesionales, las primeras marcas del mercado, las innovaciones que aparecen en el sector, todo congregado en una empresa que se ha ganado su prestigio a base de clientes satisfechos.", "Profesionales", "Vícar", true),
new Empresas(R.drawable.amalgama, "Amalgama Centro Musical", "Conocimiento, profesionalidad y un trato exclusivo es lo que nos diferencia en Amalgama, nuestra vida es la música, y eso transmitimos.", "Educación", "El Ejido", true),};
public static List<Empresas> getEmpresas() {
return Arrays.asList(empresas);
}
public static Empresas getCourseByPosition(int position) {
return empresas[position];
}
そして、これは私が私のrecyclerviewで使うアダプタです:
public class EmpresasAdapter extends RecyclerView.Adapter<EmpresasAdapter.EmpresasViewHolder>
implements ItemClickListener{
private final Context context;
private List<Empresas> items;
public EmpresasAdapter(Context context, List<Empresas> items) {
this.context = context;
this.items = items;
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public EmpresasViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.empresa_card, viewGroup, false);
return new EmpresasViewHolder(v, this);
}
@Override
public void onBindViewHolder(EmpresasViewHolder viewHolder, int i) {
// Item procesado actualmente
Empresas currentItem = items.get(i);
viewHolder.nombrep.setText(currentItem.getNombre());
viewHolder.franquiciap.setText(currentItem.getModalidad()+" | "+currentItem.getFranquicia());
// Cargar imagen
Glide.with(context)
.load(currentItem.getImagen())
.into(viewHolder.imagenp);
}
@Override
public void onItemClick(View view, int position) {
// Imagen a compartir entre transiciones
/* View sharedImage = view.findViewById(R.id.imagenp);
EmpresaDetalle.launch(
(Activity) context, position, sharedImage);*/
Empresas currentItem = items.get(position);
String nombre=currentItem.getNombre();
String descripcion=currentItem.getDescripcionC();
String franquicia=currentItem.getFranquicia();
int imagen = currentItem.getImagen();
View sharedImage = view.findViewById(R.id.imagenp);
Intent intent = new Intent(context, EmpresaDetalle.class);
intent.putExtra("nombre", nombre);
intent.putExtra("descripcion", descripcion);
intent.putExtra("franquicia", franquicia);
intent.putExtra("imagen",imagen);
context.startActivity(intent);
}
/**
* View holder para reciclar elementos
*/
public static class EmpresasViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
// Views para un curso
public ImageView imagenp;
public TextView nombrep;
public TextView franquiciap;
// Interfaz de comunicación
public ItemClickListener listener;
public EmpresasViewHolder(View v, ItemClickListener listener) {
super(v);
nombrep = (TextView) v.findViewById(R.id.nombrep);
franquiciap = (TextView) v.findViewById(R.id.Franquiciap);
imagenp = (ImageView) v.findViewById(R.id.imagenp);
v.setOnClickListener(this);
this.listener = listener;
}
@Override
public void onClick(View v) {
listener.onItemClick(v, getAdapterPosition());
}
}}
interface ItemClickListener {
void onItemClick(View view, int position);}
可能な重複JSONをJavaで解析する](http://stackoverflow.com/questions/2591098/how-to-parse-json-in-java) –
また、JSON APIを持っているので、Retrofitを使用してみることもできます。 http://square.github.io/retrofit/ –
OMFG!データを解析する方法については、この先生にお試しくださいhttp://www.androidhive.info/2012/01/android-json-parsing-tutorial/ –