从适配器类扩展类

时间:2016-11-12 08:51:00

标签: java android interface android-recyclerview adapter

在我的应用程序中应该有很多相互匹配的适配器,我想知道是否可以使接口或超类从那里继承而不是写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);
    }

}

All should reflect like this

1 个答案:

答案 0 :(得分:0)

  

可以使接口或超类继承   然后,而不是写10个适配器

这是可能的,但当然必须有一些共同点。首先,数据集应该是同质的。例如。你的项目都应该实现一个接口,一个项目和适配器本身之间的契约。在你的情况下,它可能是

public interface DataItem {
     String getTitle();
     String getDescription();
     String getDate();
     String getImageUrl();
}

而不是private List<News> newsList;,您将拥有隐私List<? extends DataItem> newsList;。正如我所说,所有项目都必须实现该接口,并且必须通过getter

访问属性