gì nếu tôi có 50 loại quan điểm? Tôi có nên có 50 lớp bên trong tĩnh trong bộ điều hợp của mình không? Theo số this answer, có.Làm thế nào để xử lý rất nhiều loại chế độ xem khác nhau trong recyclerview viewholder
Suy nghĩ đầu tiên của tôi là để di chuyển mỗi lớp bên viewholder thành một public class riêng biệt, nhưng họ phải được tĩnh. Vì vậy, đóng gói mỗi một thành một lớp học công cộng, để làm cho lớp bên trong tĩnh? Có bất kỳ lựa chọn thay thế đẹp hơn?
chỉnh sửa: mẫu mã: Vì vậy, đây sẽ là một giải pháp tốt? Điều này cũng không giết hiệu suất?
public class MainViewHolder extends DragSortAdapter.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
View container;
TextView title;
//called in onCreateViewHolder in adapter
public MainViewHolder(DragSortAdapter adapter, View itemView) {
super(adapter, itemView);
container = itemView.findViewById(R.id.card_root);
title = container.findViewById(R.id.text);
}
//called by onBindViewHolder in adapter
public void setData(Data data) {
title.setText(data.title);
}
}
edit2: mẫu, khi một trường hợp mới được trả về của viewholder
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0: return new MainViewHolder(...);
case 2: return new MainViewHolderOther(...);
...
}
}
Tại sao bạn nghĩ một lớp cấp cao nhất không phải là tĩnh? Bạn có thể thêm một số ví dụ mã để làm rõ ý của bạn không? – nhaarman
tại sao chúng phải tĩnh? – Blackbelt
@NiekHaarman lớp công khai cấp cao nhất không thể tĩnh trong java. – Tamas