提问者:小点点

如何在Android中创建通用适配器? [已关闭]


我有一个4 activity,这取决于一个适配器。 如何使适配器通用? 以便所有四个活动都可以使用它。


共1个答案

匿名用户

请参阅android文档中有关RecyclerView适配器的内容

Adapter类在很大程度上已经是一个“泛型”适配器。 您提供了一个扩展RecyclerView.ViewHolder的自定义类来包含您的布局视图

public static class MyViewHolder extends RecyclerView.ViewHolder {
    // each data item is just a string in this case
    public TextView textView;
    public MyViewHolder(TextView v) {
        super(v);
        textView = v;
    }
}

然后在onBindViewHolder()方法中填充视图

    public void onBindViewHolder(MyViewHolder holder, int position) {
    // - get element from your dataset at this position
    // - replace the contents of the view with that element
    holder.textView.setText(mDataset[position]);

}

没有什么可以阻止您在多个活动中使用相同的RecycerView适配器。 如果您希望在每个activity中有不同的布局,并分别填充视图数据,我认为应该有4个不同的适配器。

或者,您可以将布局选择逻辑放在onCreateViewHolder()方法中,将填充视图数据放在onBindViewHolder()中

@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
                                               int viewType) {

    View v = null;
    switch (viewType) {
    case: LAYOUT_1:
          v = (TextView) LayoutInflater.from(parent.getContext())
            .inflate(R.layout.mylayout1, parent, false);
    case: LAYOUT_2:
          v = (TextView) LayoutInflater.from(parent.getContext())
            .inflate(R.layout.mylayout2, parent, false);
    default: 
       //default layout behaviour
    }

    MyViewHolder vh = new MyViewHolder(v);
    return vh;
}