RecyclerView .setAdapter () странное поведение.Устанавливает мой адаптер после добавления к нему данных - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь отладить предыдущий проект и наткнулся на что-то странное для меня.Когда вы добавляете данные в свои списки массивов и вызываете setAdapter на вашем утилизаторе, они работают как положено.Однако, когда я тестировал свой переработчик, я решил установить свой адаптер на свой переработчик ДО добавления данных, и все же мой переработчик все еще загружается.Почему это случилось?Разве утилизатор не должен быть пустым?

@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = getApplicationContext();
        setContentView(R.layout.activity_main);

         ArrayList<String> mEventId = new ArrayList<>();
         ArrayList<String> mEventName = new ArrayList<>();
         ArrayList<String> mEventPreview = new ArrayList<>();
         ArrayList<Integer> mNumberViewers = new ArrayList<>();

         ArrayList<String> mUserId = new ArrayList<>();
         ArrayList<String> mUsername = new ArrayList<>();
         ArrayList<String> mProfilePic = new ArrayList<>();
         ArrayList<Integer> mStreamingUserNumberViewers = new ArrayList<>();

        EventAdapter mEventAdapter = new EventAdapter(mEventId, mEventName, mEventPreview, mNumberViewers, mContext);
        UserAdapter mUserAdapter = new UserAdapter(mUserId, mUsername, mProfilePic, mStreamingUserNumberViewers, mContext);

        RecyclerView mRecyclerViewEvent = findViewById(R.id.event_recycler);
        RecyclerView mRecyclerViewUsers = findViewById(R.id.user_recycler);

        mRecyclerViewEvent.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
        mRecyclerViewUsers.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));


        //I set my adapters on my recyclerviews before adding data to them
        //They should be empty but are not

        mRecyclerViewEvent.setAdapter(mEventAdapter);
        mRecyclerViewUsers.setAdapter(mUserAdapter);

        mEventId.add("testid");
        mEventName.add("name");
        mEventPreview.add("imgur.com/someimage.jpg");
        mNumberViewers.add(5);

        mUserId.add("testid2");
        mUsername.add("username");
        mProfilePic.add("imgur.com/someimage.jpg");
        mStreamingUserNumberViewers.add(10);



    }

Оба моих адаптера выглядят так:

public class EventAdapter extends RecyclerView.Adapter<EventAdapter.ViewHolder> {

    private ArrayList<String> mEventId, mEventName, mEventPreview;
    private ArrayList<Integer> mEventViewers;
    private Context mContext;

    public EventAdapter(ArrayList<String> mEventId, ArrayList<String> mEventName, ArrayList<String>
                                mEventPreview, ArrayList<Integer> mNumberViewers, Context mContext) {
        this.mEventId = mEventId;
        this.mEventName = mEventName;
        this.mEventPreview = mEventPreview;
        this.mEventViewers = mNumberViewers;
        this.mContext = mContext;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.event_model, viewGroup, false);

        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) {

        viewHolder.viewHolderEventName.setText(mEventName.get(position));
        viewHolder.viewHolderNumberViewers.setText(String.valueOf(mEventViewers.get(position)));
        Glide.with(mContext).load(mEventPreview.get(position)).apply(RequestOptions.centerCropTransform()).into(viewHolder.viewHolderEventPreview);

        Drawable onlineIcon = AppCompatResources.getDrawable(mContext, R.drawable.icon_online);
        viewHolder.viewHolderNumberViewers.setCompoundDrawablesWithIntrinsicBounds(onlineIcon, null, null, null);


    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        private ImageView viewHolderEventPreview;
        private TextView viewHolderEventName, viewHolderNumberViewers;
        private RelativeLayout viewHolderRelativeLayout;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            viewHolderEventPreview = itemView.findViewById(R.id.event_image);
            viewHolderEventName = itemView.findViewById(R.id.event_name);
            viewHolderNumberViewers = itemView.findViewById(R.id.event_viewers);
            viewHolderRelativeLayout = itemView.findViewById(R.id.event_layout);

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...