我的应用程序中有两个RecyclerView,它们都包含自己的适配器。两个适配器都有自己的静态viewHolder。 ViewHolder是静态的,以防止创建的实例和剩余的实例导致内存泄漏。
这些静态ViewHolder类看起来很相似,只是一两个参数有所不同。我想通过拥有ViewHolder工厂来缩短适配器类的代码,但是由于ViewHolder类需要是静态的,因此我不确定我想要的是否可行。
在这种情况下,有没有办法缩短重复的代码?还是我应该与“大型”适配器类保持联系。
StorageViewHolder
static class StorageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
// the repeating item in the adapter
final Button storageItemView;
Context _context;
// constructor setting the clicklisteners and buttons
StorageViewHolder(View itemView, Context context, RecyclerviewClickListener listener)
{
super(itemView);
_listener = listener;
_context = context;
storageItemView = itemView.findViewById(R.id.storageButton);
itemView.setOnClickListener(this);
}
public void setOnItemClickListener(RecyclerviewClickListener clickListener)
{
StorageListAdapter._listener = clickListener;
}
@Override
public void onClick(View v)
{
Intent intent = new Intent(_context, StorageActivity.class);
intent.putExtra("storageID", ((Button) v).getId());
_context.startActivity(intent);
}
}
ShelfViewHolder
static class ShelfViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
// the repeating item in the adapter
final Button shelfItemView;
Context _context;
// constructor setting the clicklisteners and buttons
ShelfViewHolder(View itemView, Context context, RecyclerviewClickListener listener)
{
super(itemView);
_listener = listener;
_context = context;
shelfItemView = itemView.findViewById(R.id.storageButton);
itemView.setOnClickListener(this);
}
public void setOnItemClickListener(RecyclerviewClickListener clickListener)
{
ShelfListAdapter._listener = clickListener;
}
@Override
public void onClick(View v)
{
Intent intent = new Intent(_context, ShelfActivity.class);
intent.putExtra("shelfID", ((Button) v).getText().toString());
_context.startActivity(intent);
}
}