2014-11-20 20 views
17

Tôi đang sử dụng chế độ xem lại để hiển thị danh sách. Tôi đã tự hỏi làm cách nào để hiển thị các loại chế độ xem khác nhau? Như trong ViewHolders khác nhau trong cùng một bộ điều hợpChế độ xem lại hiển thị các loại chế độ xem khác nhau

Trong listview đơn giản, chúng tôi đã sử dụng getItemViewType(), bất kỳ điều gì khác trong chế độ xem lại?

+0

Bản sao có thể có của [Cách tạo RecyclerView với nhiều loại chế độ xem?] (http://stackoverflow.com/questions/26245139/how-to-create-recyclerview-with-multiple-view-type) –

Trả lời

38

Để tạo RecyclerView với nhiều kiểu xem chỉ thực hiện getItemViewType(), hai khác nhau ViewHolder s và chăm sóc của tham số viewType trong onCreateViewHolder()bindViewHolder().

dụ viết tắt:

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

    private static final int VIEW_TYPE_FIRST = 0; 
    private static final int VIEW_TYPE_SECOND = 1; 

    class ViewHolderFirst extends RecyclerView.ViewHolder { 
     ... 
    } 

    class ViewHolderSecond extends RecyclerView.ViewHolder { 
     ... 
    } 

    @Override 
    int getItemViewType(int position) { 
     return position % 2; 
    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     switch (viewType) { 
      case VIEW_TYPE_FIRST: return new ViewHolderFirst(...); 
      case VIEW_TYPE_SECOND: return new ViewHolderSecond(...); 
      ... 
     } 
    } 

    @Override 
    public void bindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     switch (getItemViewType(position)) { 
      case VIEW_TYPE_FIRST: 
       ViewHolderFirst viewHolderFirst = (ViewHolderFirst)holder; 
       ... 
       break; 
      case VIEW_TYPE_SECOND: 
       ViewHolderSecond viewHolderSecond = (ViewHolderSecond)holder; 
       ... 
       break; 
      ... 
     } 
    } 
} 
+0

Điều gì sẽ bạn quay trở lại cho trường hợp mặc định trong onCreaeViewHolder? –

+0

@GokhanArik bạn chọn. Tôi nghĩ rằng sự lựa chọn tốt nhất là trả lại bộ điều hợp rỗng, vì danh sách được sử dụng để điền vào bộ điều hợp có thể trống. – russellhoff

+0

Google khuyên bạn nên hiển thị Hình ảnh hoặc văn bản hữu ích khi không có nội dung để hiển thị. Làm theo [thông số kỹ thuật thiết kế material design] (https://material.google.com/patterns/empty-states.html#) trên các trạng thái trống để biết thêm chi tiết. –

-2

biên dịch 'com.firebaseui: căn cứ hỏa lực-ui-cơ sở dữ liệu: 1.0.1' biên dịch 'com.firebaseui: căn cứ hỏa lực-ui-lưu trữ: 1.0.1' đưa rằng trong gradle

Các vấn đề liên quan