繁体   English   中英

如何在android studio中创建retrofit2数组?

[英]How to create a retrofit2 array in android studio?

我从 JSON 中取出了这些信息并对其进行了初始化,但我不明白如何从表单中获取数据,然后将它们传递给 cardView。 或者有更简单的方法吗?

主要活动

public class MainActivity extends AppCompatActivity {
    Context context;
    Example example;
    Response responses;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView rv = (RecyclerView)findViewById(R.id.cartView);
        LinearLayoutManager llm = new LinearLayoutManager(context);

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("Secret Url") // For some reason I cannot show the url
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        Api api = retrofit.create(Api.class);
        ArrayList arrayList = new ArrayList();
        Call<Example> call = api.getRespon();
        call.enqueue(new Callback<Example>() {
            @Override
            public void onResponse(Call<Example> call, Response<Example> response) {
                if(response.code() != 200){
                    Toast.makeText(MainActivity.this, "Connect",Toast.LENGTH_SHORT).show();
                    return;
                }
                Example examples = response.body();
                for(int i=0; i<examples.getResponse().size(); i++){
                    String f_name = response.body().getResponse().iterator().next().getfName();
                    String l_name = response.body().getResponse().iterator().next().getlName();
                    String birthday = response.body().getResponse().iterator().next().getBirthday();
                    String SpecName = response.body().getResponse().iterator().next().getSpecialty()
                                                     .iterator().next().getName();
                    int SpecId = response.body().getResponse().iterator().next().getSpecialty()
                                                .iterator().next().getSpecialtyId();
                }
            }
            @Override
            public void onFailure(Call<Example> call, Throwable t) {
                Toast.makeText(MainActivity.this, "Fail",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

目前我还没有完成课程,因为我无法指定已经实现的数据

角色适配器

public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.PersonViewHolder> {

    Context context;
    Example example;
    MainActivity mainActivity;

    public static class PersonViewHolder extends RecyclerView.ViewHolder{

        CardView cv;
        TextView l_name, f_name, birthday, SpecName, Age;
        ImageView avatar;

        public PersonViewHolder(View itemView) {
            super(itemView);
            cv = itemView.findViewById(R.id.cartView);
            l_name = itemView.findViewById(R.id.textLName);
            f_name = itemView.findViewById(R.id.textFName);
            birthday = itemView.findViewById(R.id.textBirthday);
            SpecName = itemView.findViewById(R.id.textSpecName);
            Age = itemView.findViewById(R.id.textAge);
        }
    }
    // иницилизация
    @Override
    public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_layout,viewGroup,false);
        PersonViewHolder phv = new PersonViewHolder(v);
        return phv;
    }

    @Override
    public void onBindViewHolder(PersonViewHolder personViewHolder, int i) {
            //***
    }

    @Override
    public int getItemCount() {
        return example.getResponse().size();
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

}

处理程序本身

回复

public class Response {

    @SerializedName("f_name")
    @Expose
    private String fName;
    @SerializedName("l_name")
    @Expose
    private String lName;
    @SerializedName("birthday")
    @Expose
    private String birthday;
    @SerializedName("avatr_url")
    @Expose
    private String avatrUrl;
    @SerializedName("specialty")
    @Expose
    private List<Specialty> specialty = null;

    public String getfName() {
        return fName;
    }

    public void setfName(String fName) {
        this.fName = fName;
    }

    public Response withfName(String fName) {
        this.fName = fName;
        return this;
    }

    public String getlName() {
        return lName;
    }

    public void setlName(String lName) {
        this.lName = lName;
    }

    public Response withlName(String lName) {
        this.lName = lName;
        return this;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public Response withBirthday(String birthday) {
        this.birthday = birthday;
        return this;
    }

    public String getAvatrUrl() {
        return avatrUrl;
    }

    public void setAvatrUrl(String avatrUrl) {
        this.avatrUrl = avatrUrl;
    }

    public Response withAvatrUrl(String avatrUrl) {
        this.avatrUrl = avatrUrl;
        return this;
    }

    public List<Specialty> getSpecialty() {
        return specialty;
    }

    public void setSpecialty(List<Specialty> specialty) {
        this.specialty = specialty;
    }

    public Response withSpecialty(List<Specialty> specialty) {
        this.specialty = specialty;
        return this;
    }

}

专业

public class Specialty {

    @SerializedName("specialty_id")
    @Expose
    private Integer specialtyId;
    @SerializedName("name")
    @Expose
    private String name;

    public Integer getSpecialtyId() {
        return specialtyId;
    }

    public void setSpecialtyId(Integer specialtyId) {
        this.specialtyId = specialtyId;
    }

    public Specialty withSpecialtyId(Integer specialtyId) {
        this.specialtyId = specialtyId;
        return this;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Specialty withName(String name) {
        this.name = name;
        return this;
    }

}

我通过创建一个列表并将数据放入一个数组中解决了这个问题

List<Worker> workerList = new ArrayList<>();
for(int i = 0; i < examples.getResponse().size(); i++){
                    String f_name = response.body().getResponse().get(i).getfName();
                    String l_name = response.body().getResponse().get(i).getlName();
                    String birthday = response.body().getResponse().get(i).getBirthday();
                    String SpecName = response.body().getResponse().get(i).getSpecialty()
                                                     .iterator().next().getName();
                    String SpecId =  response.body().getResponse().iterator().next().getSpecialty()
                                                     .iterator().next().getSpecialtyId().toString();
                    String AvatarUrl = response.body().getResponse().get(i).getAvatrUrl();
                    workerList.add(new Worker(f_name, l_name, birthday, SpecName, SpecId, AvatarUrl));

在 Worker 中有一个构造函数和 getter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM