在回收者视图中使用自定义视图

Using custom view in recycler view

我发现我的项目需要从 ListView 转移到 RecyclerView。但是我在适配器实现方面遇到了一些问题。

在我当前的 ListView 实现中,我使用 CustomView 而不是在那里膨胀。这是我当前的 getView()

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

但是在 RecyclerView 适配器中没有 getView() 方法。我们需要将这个自定义视图绑定到各自的视图持有者中。但是我怎么能在当前的实现中做到这一点,因为我没有在适配器中膨胀任何布局。视图 inflation 是在 PanelViewFactory 中完成的,我在这里只有视图实例。所以请帮我解决这个问题。

提前致谢

您将在 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);
}

您可以在此处创建自定义视图。

您也可以在 RecyclerView.Adapter 中应用不同 ViewTypes 的模式。

第 1 步:在 onCreateViewHolder()

中创建自定义视图
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = PanelViewFactory.createPanel(..);
    return new PanelViewHolder(view);
}

这里我假设您必须为您的自定义 PanelView 创建某种 ViewHolder。如果您不需要 ViewHolder,这很可能意味着您在当前实施中没有以最有效的方式做事,所以这是一个改进的好机会:)

第 2 步:在方法PanelViewHolder中绑定数据

public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
     PanelViewHolder viewHolder = (PanelViewHolder)holder;
     viewHolder.name.setText(...);
     ....
}