Проблема с ArrayAdapter для отображения данных из Retrofit - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу показать данные, которые поступают из функции обратного вызова Retrofit. Я получаю данные от модернизации отлично, но я не вижу в ListView моего адаптера. Когда я вижу отладчик, значение адаптера равно нулю, поэтому я не знаю почему. Я показываю вам код здесь:

Это мой адаптер:

public class AdapterScoring extends ArrayAdapter<ArrayList<ParticipantResponse>> {

    Context context;
    int item_Layaut;
    ArrayList<Participant> data;
    ApiUtils apiUtils;
    public AdapterScoring(@NonNull Context context, int resource, @NonNull ArrayList objects) {
        super(context, resource, objects);
        this.context = context;
        this.item_Layaut = resource;
        this.data = objects;
    }

    @Override
    public int getCount() {
        return data.size();
    }
    public void setData(ParticipantResponse data) {
        if(data!=null){
            this.data = data.getParticipant().getScoring();
            this.notifyDataSetChanged();
        }

    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater layoutInflater = LayoutInflater.from(context);
            convertView = layoutInflater.inflate(item_Layaut, parent, false);
        }


        String image = data.get(position).getPhoto_profile();
        String name = String.valueOf(data.get(position).getName());
        String points = String.valueOf(data.get(position).getPoints());


        if(image!= null) {
            ImageView elementImage = convertView.findViewById(R.id.picture_participant);
            Picasso.get().load(apiUtils.BASE_URL_PICTURE + image).fit().into(elementImage);
        }


        TextView elementName = convertView.findViewById(R.id.name_participant);
        elementName.setText(name);

        TextView elementPoints = convertView.findViewById(R.id.points_participant);
        elementPoints.setText(points);
        return convertView;
    }
}

Фрагмент, где я хочу реализовать ListView с данными:

public class ScoringFragment extends Fragment {
    AdapterScoring adapterScoring;
    ListView listViewScoring;
    int groupSelectedId = 0;
    private APIService APIService;
    UserResponse user = new UserResponse(200,null,null );
    ParticipantResponse participantResponse = new ParticipantResponse(200,null,null );
  Participant participants = new Participant();
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View RootView = inflater.inflate(R.layout.fragment_scoring, container, false);
        listViewScoring = (ListView) RootView.findViewById(R.id.scoring_listview);
        APIService = ApiUtils.getAPIService();

        adapterScoring = new AdapterScoring(getActivity().getApplicationContext(), R.layout.item_participant_layout, participantResponse.getParticipant().getScoring());

        Log.d("User in Scoring", user.getUser().getName());
        Log.d("User in Scoring", String.valueOf(groupSelectedId));
        getAllParticipantByGroup(String.valueOf(groupSelectedId));
        return RootView;
    }
    public void getAllParticipantByGroup(String id_group){

        Call<ParticipantResponse> call = APIService.getParticipantsByGroup(id_group);
        call.enqueue(new Callback<ParticipantResponse>() {
            @Override
            public void onResponse(Call<ParticipantResponse> call, Response<ParticipantResponse> response) {
                if (response.isSuccessful()) {
                    participantResponse = response.body();
                    adapterScoring.notifyDataSetChanged();
                    adapterScoring.setData(participantResponse);
                    listViewScoring.setAdapter(adapterScoring);
                    Log.d("RESPONSE_SUCCESS", "Everything All right");

                }
            }

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

                Log.d("RESPONSE_FAILURE", String.valueOf(t));
            }
        });
    }

    public void recievedUserGroup(UserResponse userResponse, int groupSelected) {
        if(user!=null ){
            user =userResponse;
            groupSelectedId = groupSelected;
        }
    }
}

Это мой модель класса ParticipantResponse и Participant:

    private float code;
    private Participant participant;
    private ArrayList<Participant > participants = new ArrayList <> ();
    private String msg;

    public ParticipantResponse(float code, ArrayList<Participant> participants, String msg) {
        this.code = code;
        this.participants = participants;
        this.msg = msg;
    }
     public float getCode() {
        return code;
    }
     public Participant getParticipant() {
        return participant;
    }
     public String getMsg() {
        return msg;
     }

public class Participant {

    ArrayList<Participant> scoring = new ArrayList<Participant>();

    public ArrayList<Participant> getScoring() {
        return scoring;
    }

    public Participant (){

    }

    @SerializedName("name")
    private String name;

    @SerializedName("photo_profile")
    private String photo_profile;

    @SerializedName("id_user")
    private float id_user;

    @SerializedName("id_group")
    private String id_group;

    @SerializedName("admin_user_group")
    private String admin_user_group;

    @SerializedName("points")
    private float points;

    @SerializedName("own_budget")
    private float own_budget;

    @SerializedName("updated_at")
    private String updated_at = null;

    @SerializedName("created_at")
    private String created_at;

    @SerializedName("id")
    private String id;

    public Participant(float id_user, String id_group, String admin_user_group, float points, float own_budget, String updated_at, String created_at, String id) {
        this.id_user = id_user;
        this.id_group = id_group;
        this.admin_user_group = admin_user_group;
        this.points = points;
        this.own_budget = own_budget;
        this.updated_at = updated_at;
        this.created_at = created_at;
        this.id = id;
    }
 public float getId_user() {
        return id_user;
    }

    public String getName() {
        return name;
    }

    public String getPhoto_profile() {
        return photo_profile;
    }

    public String getId_group() {
        return id_group;
    }

    public String getAdmin_user_group() {
        return admin_user_group;
    }

    public float getPoints() {
        return points;
    }

    public float getOwn_budget() {
        return own_budget;
    }

    public String getUpdated_at() {
        return updated_at;
    }

    public String getCreated_at() {
        return created_at;
    }

    public String getId() {
        return id;
    }

 public float getId_user() {
        return id_user;
    }

    public String getName() {
        return name;
    }

    public String getPhoto_profile() {
        return photo_profile;
    }

    public String getId_group() {
        return id_group;
    }

    public String getAdmin_user_group() {
        return admin_user_group;
    }

    public float getPoints() {
        return points;
    }

    public float getOwn_budget() {
        return own_budget;
    }

    public String getUpdated_at() {
        return updated_at;
    }

    public String getCreated_at() {
        return created_at;
    }

    public String getId() {
        return id;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...