在RecyclerView中通过改造获取所有用户

时间:2018-08-09 20:04:18

标签: android json android-recyclerview retrofit2

我的recyclerView仅显示第一个用户数据。但是当我检查http://localhost/MyApi/public/allusers中的所有用户数据时,它以JSON格式显示6个用户数据

这是我的JSON图片 Json image

我的SingleTon课程

public class RetofitClient_SingleTone {

private static final String BASE_URL = "http://192.168.0.100/MyApi/public/";
private static RetofitClient_SingleTone mInstance;
private Retrofit retrofit;

public RetofitClient_SingleTone() {
    retrofit=new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
}
public static synchronized  RetofitClient_SingleTone getInstance(){
    if (mInstance==null){
        mInstance = new RetofitClient_SingleTone();
    }
    return mInstance;
}

public Api getApi(){
    return retrofit.create(Api.class);
 }
}

我的Api.class

 public interface Api {
   @GET("allusers")
  Call<UsersResponse> getUsers();
 }

2个模型类

1。我的UserResponse.class

 public class UsersResponse {
  @SerializedName("error")
  @Expose
  private Boolean error;
  @SerializedName("users")
  @Expose
  private List<User> users = null;

  public UsersResponse(boolean error, List<User> users) {
     this.error = error;
     this.users = users;
  }

  public boolean isError() {
     return error;
 }

 public List<User> getUsers() {
     return users;
  }
 }

2。我的User.class

public class User {
 @SerializedName("id")
 @Expose
 private Integer id;
 @SerializedName("email")
 @Expose
 private String email;
 @SerializedName("name")
 @Expose
 private String name;
 @SerializedName("school")
 @Expose
 private String school;

 public User(int id, String email, String name, String school) {
    this.id = id;
    this.email = email;
    this.name = name;
    this.school = school;
 }

 public int getId() {
    return id;
 }

 public String getEmail() {
    return email;
 }

 public String getName() {
    return name;
 }

 public String getSchool() {
    return school;
  }
 }

我的适配器类Users_Adapter .class

public class Users_Adapter extends RecyclerView.Adapter<Users_Adapter.UserViewHolder> {

private Context context;
private List<User> userList;

public Users_Adapter(Context context, List<User> userList) {
    this.context = context;
    this.userList = userList;
}

@NonNull
@Override
public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.recyler_view_users, parent, false);



    return new UserViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull UserViewHolder holder, int position) {

    User user = userList.get(position);
    Log.e("Name -  - - -", "onBindViewHolder: "+user.getName() );
    holder.name_TV.setText(user.getName());
    holder.email_TV.setText(user.getEmail());
    holder.school_TV.setText(user.getSchool());
}
@Override
public int getItemCount() {
    return userList.size();
}
//create class that extend ViewHolder class
public class UserViewHolder extends RecyclerView.ViewHolder {

    TextView name_TV;
    TextView email_TV;
    TextView school_TV;

    public UserViewHolder(@NonNull View itemView) {
        super(itemView);
        name_TV = itemView.findViewById(R.id.texview_name);
        email_TV = itemView.findViewById(R.id.texview_Email);
        school_TV = itemView.findViewById(R.id.texview_school);
     }
  }
 }

MY Fragment Class UsersFragment.class

public class UsersFragment extends Fragment{

RecyclerView recyclerView;
private Users_Adapter adapter;
private List<User> userList;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.users_fragment,container,false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);


    recyclerView=view.findViewById(R.id.recylerView_id);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    Call<UsersResponse> call= RetofitClient_SingleTone.getInstance().getApi().getUsers();

    call.enqueue(new Callback<UsersResponse>() {
        @Override
        public void onResponse(Call<UsersResponse> call, Response<UsersResponse> response) {

            userList = response.body().getUsers();
            adapter=new Users_Adapter(getActivity(),userList);
            recyclerView.setAdapter(adapter);
        }

        @Override
        public void onFailure(Call<UsersResponse> call, Throwable t) {

        }
    });
}
}

我想在recyclerView中显示所有用户,但只显示第一个用户

应用程序屏幕短

image

0 个答案:

没有答案