Я пытаюсь отладить предыдущий проект и наткнулся на что-то странное для меня.Когда вы добавляете данные в свои списки массивов и вызываете 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);
}
}
}