繁体   English   中英

从适配器类扩展类

[英]Extend a class from an adapter class

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

}

所有人都应该这样反思

可以使接口或超类从那里继承,然后代替编写10个适配器

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM