【发布时间】:2017-03-26 11:06:45
【问题描述】:
在我的应用程序中应该有很多彼此相似的适配器,我想知道是否可以让接口或超类从那里继承,而不是写 10 个适配器,谢谢!!
我的适配器代码
public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.NewsViewHolder> {
private List<News> newsList;
private Context ctx;
public NewsAdapter(List<News> newsList, Context ctx) {
this.newsList = newsList;
this.ctx = ctx;
}
static class NewsViewHolder extends RecyclerView.ViewHolder {
CardView cv;
TextView newsTitle;
TextView newsDescription;
ImageView newsImage;
TextView newsDate;
NewsViewHolder(View itemView) {
super(itemView);
cv = (CardView) itemView.findViewById(R.id.cvNews);
newsTitle = (TextView) itemView.findViewById(R.id.title_news);
newsDescription = (TextView) itemView.findViewById(R.id.description_news);
newsDate = (TextView) itemView.findViewById(R.id.date_news);
newsImage = (ImageView) itemView.findViewById(R.id.image_news);
}
}
@Override
public NewsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item, parent,
false);
return new NewsViewHolder(v);
}
@Override
public void onBindViewHolder(NewsViewHolder holder, int position) {
holder.newsTitle.setText(newsList.get(position).newsTitle);
holder.newsDescription.setText(newsList.get(position).newsDescription);
holder.newsDate.setText(newsList.get(position).newsDate);
Glide.with(ctx).load(Constants.SITE + newsList.get(position).newsImage)
.into(holder.newsImage);
}
@Override
public int getItemCount() {
return newsList.size();
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
}
【问题讨论】:
-
应该是很多adapter每个都相似,相似度如何?
-
@Blackbelt 他们有类似的设计(物品)....我添加了一张图片,请看)
-
如果您有多个看起来相同或相似的列表,您可以使用相同的适配器、相同的视图持有者和相同的 POJO 类。如果存在细微差别,您可以随时使用 if else 块来满足您的需求,而不是为每个列表创建新的适配器。
-
@MohammedAtif 我想过你写的东西,但是如果我在 VievHolder 有一个项目,我应该怎么做?写很多ViewHolders?或者别的什么?
-
正如我所说,如果有 3 到 4 个项目的差异,请使用 if else 阻止仅使用那些需要的项目。
标签: java android interface android-recyclerview adapter