Получение всех пользователей путем модификации в RecyclerView

Мой recyclerView показывает только первые пользовательские данные. Но когда я проверяю данные всех пользователей в моем http: // localhost / MyApi / public / allusers, он показывает 6 пользовательских данных в формате JSON.

Это мое изображение в формате JSONИзображение Json

Мой класс 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);
     }
  }
 }

МОЙ Фрагмент Класс 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, но он показывает только первого пользователя

экран приложения

Получение всех пользователей путем модификации в RecyclerView

Пожалуйста, не используйте «Решено» в заголовке. Если вы решили свою проблему, напишите ответ здесь.

Shashanth 10.08.2018 08:32

@Shashanth, этот код работает нормально. Я обнаружил свою ошибку после публикации здесь. Моя ошибка была recyler_view_users.xml (пользователь настраиваемой строки XML). Проблема заключалась в высоте макета. Я использую их match_parent, поэтому другой мой пользователь под экраном. при прокрутке я увидел другого пользователя. Это моя ошибка. Спасибо за ваш комментарий.

Imran Sk 10.08.2018 12:49
2
2
275
0

Другие вопросы по теме