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

时间:2016-02-22 20:32:58

标签: android listview android-recyclerview android-custom-view

我认为我的项目需要从ListView转移到RecyclerView。但是我正面临着适配器实现方面的一些问题。

在我目前的ListView实现中,我使用CustomView而不是在那里进行充气。这是我当前的getView()

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

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

提前致谢

2 个答案:

答案 0 :(得分: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);
}

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

答案 1 :(得分: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(...);
     ....
}