Мой 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, но он показывает только первого пользователя
экран приложения
@Shashanth, этот код работает нормально. Я обнаружил свою ошибку после публикации здесь. Моя ошибка была recyler_view_users.xml (пользователь настраиваемой строки XML). Проблема заключалась в высоте макета. Я использую их match_parent, поэтому другой мой пользователь под экраном. при прокрутке я увидел другого пользователя. Это моя ошибка. Спасибо за ваш комментарий.
Пожалуйста, не используйте «Решено» в заголовке. Если вы решили свою проблему, напишите ответ здесь.