0

Я вижу необходимость в моем проекте для перехода от ListView к RecyclerView. Но я действительно столкнулся с некоторыми проблемами в реализации адаптера.Использование пользовательского представления в просмотре recycler

В моей текущей реализации ListView я использую CustomView вместо того, чтобы раздувать там. Вот мой текущий getView()

public View getView(int position, View containerRow, ViewGroup parent) { 
     return PanelViewFactory.createPanel(..) 
} 

Но в адаптере RecyclerView отсутствует метод getView(). Нам нужно связать этот пользовательский вид с соответствующим держателем. Но как я могу сделать это в текущей реализации, так как я не раздуваю какой-либо макет в адаптере. Взгляд на вид сделан в PanelViewFactory, и я получил только экземпляр просмотра здесь. Поэтому, пожалуйста, помогите мне решить эту проблему.

Заранее спасибо

+0

Возможный дубликат [Использовать настраиваемое представление в адаптер RecyclerView?] (https://stackoverflow.com/questions/42522121/use-custom-view-in-a-recyclerview-adapter) –

ответ

1

Вы бы раздуть в onCreateViewHolder вашего адаптера ресайклера следующим образом:

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    // Create a new view 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_row_layout, parent, false); 
    return new ViewHolder(view, this); 
} 

Здесь вы можете создать свой собственный вид.

+0

вопрос спрашивает, как использовать пользовательский вид внутри 'RecyclerView'. Непосредственное раздувание XML не использует пользовательский вид. –

+0

Не существует правила, согласно которому пользовательское представление должно быть непосредственно привязано к родительскому виду только программно. Четко определенный пользовательский вид должен отображаться в редакторе xml должным образом. Я могу создать файл макета, где мое единственное представление - это пользовательское представление ' ...', а затем раздуть его в моем просмотре recycler. Я предпочитаю этот параметр, потому что перед его развертыванием на устройстве/эмуляторе я могу просмотреть свое собственное представление. – Naveed

+0

Я должен прояснить свой предыдущий комментарий: прямое раздувание XML _inside «RecyclerView.Adapter'_ не использует пользовательский вид - конечно, не в случае заданного вопроса, когда фабричный метод уже предоставляет полностью настроенное представление. –

1

Вы можете применить рисунок ViewTypes в RecyclerView.Adapter.

Шаг 1: Создайте свой собственный вид в onCreateViewHolder()

public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = PanelViewFactory.createPanel(..); 
    return new PanelViewHolder(view); 
} 

Здесь я предполагаю, что вы должны создать своего рода ViewHolder для пользовательских PanelView. Если вам не нужен ViewHolder, это, скорее всего, означает, что вы не делаете что-то самым эффективным способом в своей текущей реализации, поэтому это хорошая возможность улучшить :)

Шаг 2: Свяжите данные в своем PanelViewHolder в метод

public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    PanelViewHolder viewHolder = (PanelViewHolder)holder; 
    viewHolder.name.setText(...); 
    .... 
} 
Смежные вопросы