我认为我的项目需要从ListView转移到RecyclerView。但是我正面临着适配器实现方面的一些问题。
在我目前的ListView实现中,我使用CustomView而不是在那里进行充气。这是我当前的getView()
public View getView(int position, View containerRow, ViewGroup parent) {
return PanelViewFactory.createPanel(..)
}
但是在RecyclerView适配器中没有getView()方法。我们需要将此自定义视图绑定到相应的视图持有者。但是我怎么能在当前的实现中做,因为我没有在适配器中充气任何布局。视图通胀在PanelViewFactory中完成,我在这里只获得了视图实例。所以请帮我解决这个问题。
提前致谢
答案 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(...);
....
}